ode45 求解非刚性微分方程,中阶方法。
-
[TOUT,YOUT] = ode45(ODEFUN,TSPAN,Y0)
, 其中TSPAN = [T0 TFINAL]
- 对初始条件为Y0的
y'= f(t,y)
微分方程系统从时间T0到TFINAL进行积分。 -
ODEFUN
是一个函数句柄。 对于标量T和向量Y,ODEFUN(T,Y)
必须返回对应于f(t,y)
的列向量。 - 答案数组
YOUT
中的每一行对应于列向量TOUT
中返回的时间。 - 要在特定时间T0,T1,…,TFINAL(全部增加或全部减少)获得解,请使用TSPAN = [T0 T1 … TFINAL]。
-
[TOUT,YOUT] = ode45(ODEFUN,TSPAN,Y0,OPTIONS)
如上所述解决,
默认积分属性由OPTIONS中的值替换,OPTIONS是使用ODESET函数创建的参数。
有关详细信息,请参阅ODESET。 常用选项是标量相对误差容限’RelTol’(默认为1e-3)和绝对误差容限矢量’AbsTol’(默认情况下为所有组件1e-6)。
如果解决方案的某些组件必须是非负的,请使用ODESET将“NonNegative”属性设置为这些组件的索引。
ode45可以解决问题M(t,y)*y' = f(t,y)
,质量矩阵M是非奇异的。
- 如果
MASS(T,Y)
返回质量矩阵的值,则使用ODESET将“Mass”属性设置为函数句柄MASS。 - 如果质量矩阵是常数,则矩阵可以用作“Mass”选项的值。
- 如果质量矩阵不依赖于状态变量Y并且使用一个输入参数T调用函数MASS,则将’MStateDependence’设置为’none’。
- ODE15S和ODE23T可以解决奇异质量矩阵的问题。
Example
[t,y]=ode45(@vdp1,[0 20],[2 0]);
plot(t,y(:,1));
解决系统y' = vdp1(t,y)
使用默认的相对误差容差1e-3和每个组件的默认绝对容差1e-6,并绘制解决方案的第一个组件。