Matlab
ode45
use MATLAB(R) to solve a previously defined system, f, with ODE45
ode15s
use MATLAB(R) to solve a previously defined system, f, with ODE15s
Calling Sequence
Parameters
Description
Examples
ode45(f, Trange, IC)
ode45(f, Trange, IC, tol=Tol)
ode15s(f, Trange, IC)
ode15s(f, Trange, IC, tol=Tol)
f
-
string naming a function defined in MATLAB®
Trange
range, t_initial..t_final
IC
initial conditions vector; for example, [0, 0, 0]
tol=Tol
optional floating-point setting for tolerance (default is .001)
The ode45 command uses MATLAB® to compute the ODE45 solution of a differential system. The ode15s command uses MATLAB® to compute the ODE15S solution of a differential system.
To be valid, the call must name the function (f) defined in MATLAB®, and specify both the time range (Trange) and the initial condition vector (IC).
The function f must either be a built-in MATLAB® function, or a function defined in the file f.m in the active MATLAB® path
The time range must contain both a start time (t_initial) and an end time (t_final).
The initial condition (IC) must have a dimension consistent with the dimension of the system defined in the function, f.
The tolerance option (specified using 'tol'=Tol) must be a floating-point value. It defaults to .001 if not specified.
Executing the ode45 command returns two Vectors: (T, X). T is the Vector of time steps where f was evaluated, and X is a Vector of values of f, evaluated at times in T.
with⁡Matlab:
Call ode45 to work on a built-in MATLAB® function.
T,Y≔ode45⁡vdp1,0..20,2,0
Call ode15s to work on a built-in MATLAB® function.
T,Y≔ode15s⁡vdp1000,0..30,2,0
Create a user-defined function, rocket, in Maple. The file may also be predefined in the current path.
file≔open⁡C:MATLABwork\rocket.m,WRITE:
filecontents≔\nfunction yp = rocket(t,y)\n% time the rocket catches the target\nglobal INTERCEPT;\n% minimum distance representing intercept\nglobal DMIN;\n% ratio of pursuer speed to target speed\nk=1.3;\n% find speed and position of target\n% (other equations can be substituted here)\nif t < 10 % target changes direction after 10 seconds\n p = [ 10; t; 0 ];\n vt = [ 0 ; 1; 0 ];\nelse\n p = [ 10; 10; t-10 ];\n vt = [ 0 ; 0; 1 ];\nend\nd = sqrt(sum((p-y).^2)); % calculate distance between P and T\nif d < DMIN % check if pursuer has caught targetN\n if t < INTERCEPT % if this is the first time, set the\n INTERCEPT = t; % interception time\n end\n k = 1; % slow down the pursuer\nend\nvp = k*sqrt(sum(vt.^2)); % set speed of pursuer\nyp = vp*(p-y)/d; % determine new position of pursuer\n:
writeline⁡file,filecontents:
close⁡file:
Use the ssystem command to set the permissions on UNIX systems.
ssystem⁡chmod a+r rocket.m:
Open the "Matlab Link".
with⁡Matlab
Before accessing the user-defined function, the file needs to be opened (in MATLAB®).
evalM⁡open('C:MATLABwork\rocket.m'):
Set global variables (in MATLAB®).
setvar⁡DMIN,0.5,globalvar
setvar⁡INTERCEPT,∞,globalvar
Setup the problem.
ti≔0:
tf≔20:
Yo≔0,0,0:
Solve the problem.
T,Y≔ode45⁡rocket,ti..tf,Yo,tol=0.0005:
Plot the results.
pursuer_plot≔plotspointplot3d⁡convert⁡Y,listlist,color=blue,symbol=diamond:
target_plot≔plotspointplot3d⁡seq⁡10,t,0,t=ti..10,seq⁡10,10,t−10,t=10..tf,color=red,symbol=cross:
plotsdisplay⁡pursuer_plot,target_plot,axes=normal
See Also
dsolve
Matlab[evalM]
MatlabMatrix
Download Help Document