Mathematics 
Solving BVP Problems
bvp4c
Example: Mathieu's Equation
This example determines the fourth eigenvalue of Mathieu's Equation. It illustrates how to write secondorder differential equations as a system of two firstorder ODEs and how to use bvp4c
to determine an unknown parameter .
The task is to compute the fourth () eigenvalue of Mathieu's equation
Because the unknown parameter is present, this secondorder differential equation is subject to three boundary conditions
Note
The demo mat4bvp contains the complete code for this example. The demo uses nested functions to place all functions required by bvp4c in a single Mfile. To run this example type mat4bvp at the command line. See BVP Solver Basic Syntax for more information.

bvp4c
, you must rewrite the equations as an equivalent system of firstorder differential equations. Using a substitution and , the differential equation is written as a system of two firstorder equations
bvp4c
can use. Because there is an unknown parameter, the function must be of the form
mat4ode
. Variable q
is shared with the outer function:
function dydx = mat4ode(x,y,lambda) dydx = [ y(2) (lambda  2*q*cos(2*x))*y(1) ]; end % End nested function mat4ode
See Finding Unknown Parameters for more information about using unknown parameters with bvp4c
.
solinit
with bvpinit
, you need to provide initial guesses for both the solution and the unknown parameter.
mat4init
provides an initial guess for the solution. mat4init
uses because this function satisfies the boundary conditions and has the correct qualitative behavior (the correct number of sign changes).
In the call to bvpinit
, the third argument, lambda
, provides an initial guess for the unknown parameter .
This example uses @
to pass mat4init
as a function handle to bvpinit
.
Note
See the function_handle (@ ), func2str , and str2func reference pages, and the Function Handles chapter of "Programming and Data Types" in the MATLAB documentation for information about function handles.

mat4bvp
example calls bvp4c
with the functions mat4ode
and mat4bc
and the structure solinit
created with bvpinit
.
bvp4c
.
deval
to evaluate the numerical solution at 100 equally spaced
points in the interval , and plot its first component. This component
approximates .
See Evaluating the Solution at Specific Points for information about using deval
.
The following plot shows the eigenfunction associated with the final eigenvalue = 17.097.
Finding Unknown Parameters
The bvp4c
solver can find unknown parameters for problems of the form
You must provide bvp4c
an initial guess for any unknown parameters in the vector solinit.parameters
. When you call bvpinit
to create the structure solinit
, specify the initial guess as a vector in the additional argument parameters
.
The bvp4c
function arguments odefun
and bcfun
must each have a third argument.
While solving the differential equations, bvp4c
adjusts the value of unknown parameters to satisfy the boundary conditions. The solver returns the final values of these unknown parameters in sol.parameters
. See Example: Mathieu's Equation.
Evaluating the Solution at Specific Points
The collocation method implemented in bvp4c
produces a C^{1}continuous solution over the whole interval of integration . You can evaluate the approximate solution, , at any point in using the helper function deval
and the structure sol
returned by bvp4c
.
The deval
function is vectorized. For a vector xint
, the i
th column of Sxint
approximates the solution .
Boundary Value Problem Solver  Using Continuation to Make a Good Initial Guess 
© 19942005 The MathWorks, Inc.