主要内容GYdF4y2Ba

数值GYdF4y2Ba

求解非刚性微分方程-中阶方法GYdF4y2Ba

描述GYdF4y2Ba

例子GYdF4y2Ba

[GYdF4y2BaTGYdF4y2Ba,GYdF4y2BaYGYdF4y2Ba) =数值(GYdF4y2BaodefunGYdF4y2Ba,GYdF4y2BatspanGYdF4y2Ba,GYdF4y2Bay0GYdF4y2Ba)GYdF4y2Ba,在那里GYdF4y2Ba[font =宋体]GYdF4y2Ba,积分微分方程组GYdF4y2Ba YGYdF4y2Ba 'GYdF4y2Ba =GYdF4y2Ba FGYdF4y2Ba (GYdF4y2Ba TGYdF4y2Ba ,GYdF4y2Ba YGYdF4y2Ba )GYdF4y2Ba 从GYdF4y2Bat0GYdF4y2Ba来GYdF4y2Ba特遣部队GYdF4y2Ba有初始条件GYdF4y2Bay0GYdF4y2Ba.解决方案数组中的每一行GYdF4y2BaYGYdF4y2Ba对应于列向量中返回的值GYdF4y2BaTGYdF4y2Ba.GYdF4y2Ba

所有MATLABGYdF4y2Ba®GYdF4y2BaODE解算器可以求解以下形式的方程组GYdF4y2Ba YGYdF4y2Ba 'GYdF4y2Ba =GYdF4y2Ba FGYdF4y2Ba (GYdF4y2Ba TGYdF4y2Ba ,GYdF4y2Ba YGYdF4y2Ba )GYdF4y2Ba ,或涉及质量矩阵的问题,GYdF4y2Ba MGYdF4y2Ba (GYdF4y2Ba TGYdF4y2Ba ,GYdF4y2Ba YGYdF4y2Ba )GYdF4y2Ba YGYdF4y2Ba 'GYdF4y2Ba =GYdF4y2Ba FGYdF4y2Ba (GYdF4y2Ba TGYdF4y2Ba ,GYdF4y2Ba YGYdF4y2Ba )GYdF4y2Ba .这些解析器都使用类似的语法。这个GYdF4y2Baode23sGYdF4y2Ba求解器只能在质量矩阵是常数的情况下求解质量矩阵问题。GYdF4y2Baode15sGYdF4y2Ba和GYdF4y2Baode23tGYdF4y2Ba可以用奇异的质量矩阵来解决问题,称为微分代数方程(DAEs)。指定质量矩阵使用GYdF4y2Ba质量GYdF4y2Ba选择GYdF4y2BaodesetGYdF4y2Ba.GYdF4y2Ba

数值GYdF4y2Ba是一个多才多艺的ODE解算器,是您应该尝试解决大多数问题的第一个解算器。但是,如果问题很难解决或需要高精度,那么其他ODE解算器可能更适合该问题。看见GYdF4y2Ba选择一个ODE求解器GYdF4y2Ba为更多的信息。GYdF4y2Ba

例子GYdF4y2Ba

[GYdF4y2BaTGYdF4y2Ba,GYdF4y2BaYGYdF4y2Ba) =数值(GYdF4y2BaodefunGYdF4y2Ba,GYdF4y2BatspanGYdF4y2Ba,GYdF4y2Bay0GYdF4y2Ba,GYdF4y2Ba选项GYdF4y2Ba)GYdF4y2Ba还使用由定义的集成设置GYdF4y2Ba选项GYdF4y2Ba,它是使用GYdF4y2BaodesetGYdF4y2Ba函数。例如,使用GYdF4y2BaAbsTolGYdF4y2Ba和GYdF4y2BaRelTolGYdF4y2Ba选项指定绝对和相对误差公差,或GYdF4y2Ba质量GYdF4y2Ba选择提供质量矩阵。GYdF4y2Ba

[GYdF4y2BaTGYdF4y2Ba,GYdF4y2BaYGYdF4y2Ba,GYdF4y2BateGYdF4y2Ba,GYdF4y2Ba叶GYdF4y2Ba,GYdF4y2Ba即GYdF4y2Ba) =数值(GYdF4y2BaodefunGYdF4y2Ba,GYdF4y2BatspanGYdF4y2Ba,GYdF4y2Bay0GYdF4y2Ba,GYdF4y2Ba选项GYdF4y2Ba)GYdF4y2Ba另外查找函数的位置GYdF4y2Ba(GYdF4y2BaTGYdF4y2Ba,GYdF4y2BaYGYdF4y2Ba)GYdF4y2Ba,被调用的事件函数为零。在输出中,GYdF4y2BateGYdF4y2Ba是活动的时间,GYdF4y2Ba叶GYdF4y2Ba解决方案是在事件发生的时候吗GYdF4y2Ba即GYdF4y2Ba是被触发事件的索引。GYdF4y2Ba

对于每个事件函数,指定积分是否在零处终止,以及过零的方向是否重要。通过设置GYdF4y2Ba“事件”GYdF4y2Ba属性设置为函数,例如GYdF4y2BamyEventFcnGYdF4y2Ba或GYdF4y2Ba@myEventFcnGYdF4y2Ba,并创建相应的函数:[GYdF4y2Ba价值GYdF4y2Ba,GYdF4y2BaisterminalGYdF4y2Ba,GYdF4y2Ba方向GYdF4y2Ba] =GYdF4y2BamyEventFcnGYdF4y2Ba(GYdF4y2BaTGYdF4y2Ba,GYdF4y2BaYGYdF4y2Ba).有关更多信息,请参见GYdF4y2Ba歌唱活动的位置GYdF4y2Ba.GYdF4y2Ba

例子GYdF4y2Ba

索尔GYdF4y2Ba=数值(GYdF4y2Ba___GYdF4y2Ba)GYdF4y2Ba返回可以使用的结构GYdF4y2Ba德瓦尔GYdF4y2Ba求区间上任意一点的解GYdF4y2Ba(t0 tf)GYdF4y2Ba.您可以在前面的语法中使用任何输入参数组合。GYdF4y2Ba

例子GYdF4y2Ba

全部折叠GYdF4y2Ba

具有单个解决方案组件的简单ode可以在对求解器的调用中指定为匿名函数。匿名函数必须接受两个输入GYdF4y2Ba(t, y)GYdF4y2Ba即使其中一个输入没有被使用。GYdF4y2Ba

解决歌唱GYdF4y2Ba

YGYdF4y2Ba ′GYdF4y2Ba =GYdF4y2Ba 2.GYdF4y2Ba TGYdF4y2Ba .GYdF4y2Ba

使用的时间间隔GYdF4y2Ba[0, 5]GYdF4y2Ba以及初始条件GYdF4y2Bay0 = 0GYdF4y2Ba.GYdF4y2Ba

Tspan = [0 5];y0 = 0;[t,y] = ode45(@(t,y) 2*t, tspan, y0);GYdF4y2Ba

策划解决方案。GYdF4y2Ba

情节(t yGYdF4y2Ba“o”GYdF4y2Ba)GYdF4y2Ba

图中包含一个坐标轴。轴包含一个线型对象。GYdF4y2Ba

范德波尔方程是一个二阶常微分方程GYdF4y2Ba

$ $ y“_1 - \μ\离开(1 - y_1 ^ 2 \右)y ' _1 + y_1 = 0, $ $GYdF4y2Ba

在哪里GYdF4y2Ba$\mu>;0$GYdF4y2Ba为标量参数。将这个方程写成一阶ode的方程组,用代换法GYdF4y2Ba$ y ' _1 = y_2美元GYdF4y2Ba.得到的一阶ode系统为GYdF4y2Ba

数组$ $ & # xA; \开始{}{cl} & # xA; y“_1 & # 38;= y_2 \ \ & # xA; y ' _2 & # 38; = \μ(1-y_1 ^ 2) y_2结束——y_1。\{数组}& # xA; $ $GYdF4y2Ba

函数文件GYdF4y2Bavdp1.mGYdF4y2Ba表示范德波尔方程,使用GYdF4y2Ba\μ= 1美元GYdF4y2Ba.的变量GYdF4y2Bay_1美元GYdF4y2Ba和GYdF4y2Bay_2美元GYdF4y2Ba的条目GYdF4y2Bay (1)GYdF4y2Ba和GYdF4y2Bay (2)GYdF4y2Ba对于二元向量,GYdF4y2BadydtGYdF4y2Ba.GYdF4y2Ba

函数GYdF4y2Badydt=vdp1(t,y)GYdF4y2Ba计算mu = 1时的范德堡尔odeGYdF4y2Ba%GYdF4y2Ba%参见ODE113, ODE23, ODE45。GYdF4y2Ba%Jacek Kierzenka和Lawrence F.ShampineGYdF4y2Ba%版权所有1984-2014 MathWorks公司。GYdF4y2Badydt = [y (2);(1 y (1) ^ 2) * y (2) - y (1)];GYdF4y2Ba

解决ODE使用GYdF4y2Ba数值GYdF4y2Ba命令用于设置时间间隔GYdF4y2Ba20 [0]GYdF4y2Ba具有初始值GYdF4y2Ba[2 0]GYdF4y2Ba.结果输出是时间点的列向量GYdF4y2BaTGYdF4y2Ba和解决方案阵列GYdF4y2BaYGYdF4y2Ba.在每一行GYdF4y2BaYGYdF4y2Ba的对应行中返回的时间GYdF4y2BaTGYdF4y2Ba.第一列GYdF4y2BaYGYdF4y2Ba对应于GYdF4y2Bay_1美元GYdF4y2Ba,第二列为GYdF4y2Bay_2美元GYdF4y2Ba.GYdF4y2Ba

[t,y] = ode45(@vdp1,[0 20],[2;0]);GYdF4y2Ba

画出金宝搏官方网站GYdF4y2Bay_1美元GYdF4y2Ba和GYdF4y2Bay_2美元GYdF4y2Ba对GYdF4y2BaTGYdF4y2Ba.GYdF4y2Ba

情节(t y (: 1),GYdF4y2Ba“o”GYdF4y2Ba、t、y (:, 2),GYdF4y2Ba“o”GYdF4y2Ba)标题(GYdF4y2Ba用ODE45求解van der Pol方程(\mu = 1)GYdF4y2Ba); xlabel(GYdF4y2Ba“t”GYdF4y2Ba);ylabel (GYdF4y2Ba“解决方案y”GYdF4y2Ba);传奇(GYdF4y2Ba“y_1”GYdF4y2Ba,GYdF4y2Ba“y_2”GYdF4y2Ba)GYdF4y2Ba

数值GYdF4y2Ba只适用于使用两个输入参数的函数,GYdF4y2BaTGYdF4y2Ba和GYdF4y2BaYGYdF4y2Ba.但是,您可以通过在函数外部定义参数并在指定函数句柄时传入参数来传递额外的参数。GYdF4y2Ba

解决歌唱GYdF4y2Ba

$$y

把方程写成一阶方程组GYdF4y2Ba

数组$ $ \开始{}{cl} y ' _1 & # 38; = y_2 \ \ y ' _2 & # 38; = \压裂{一}{B} t y_1强生# xA; \{数组}$ $GYdF4y2Ba

odefcn.mGYdF4y2Ba将这个方程组表示为接受四个输入参数的函数:GYdF4y2BaTGYdF4y2Ba,GYdF4y2BaYGYdF4y2Ba,GYdF4y2BaA.GYdF4y2Ba,GYdF4y2BaBGYdF4y2Ba.GYdF4y2Ba

函数GYdF4y2Ba= odefcn(t,y,A,B)dydt (1) = y (2);dydt (2) = (A / B) * t。* y (1);GYdF4y2Ba

使用以下方法解决ODEGYdF4y2Ba数值GYdF4y2Ba.指定函数句柄,以便它传入的预定义值GYdF4y2BaA.GYdF4y2Ba和GYdF4y2BaBGYdF4y2Ba来GYdF4y2BaodefcnGYdF4y2Ba.GYdF4y2Ba

A=1;B=2;tspan=[05];y0=[0.01];[t,y]=ode45(@(t,y)odefcn(t,y,A,B),tspan,y0);GYdF4y2Ba

策划的结果。GYdF4y2Ba

情节(t y (: 1),GYdF4y2Ba“o”GYdF4y2Ba、t、y (:, 2),GYdF4y2Ba“-”。GYdF4y2Ba)GYdF4y2Ba

对于具有一个方程式的简单ODE系统,可以指定GYdF4y2Bay0GYdF4y2Ba作为包含多个初始条件的向量。这种技术通过标量展开创建一个独立的方程组,每个初始值一个,并且GYdF4y2Ba数值GYdF4y2Ba求解系统以产生每个初始值的结果。GYdF4y2Ba

创建一个匿名函数来表示方程GYdF4y2Ba FGYdF4y2Ba (GYdF4y2Ba TGYdF4y2Ba ,GYdF4y2Ba YGYdF4y2Ba )GYdF4y2Ba =GYdF4y2Ba -GYdF4y2Ba 2.GYdF4y2Ba YGYdF4y2Ba +GYdF4y2Ba 2.GYdF4y2Ba 因为GYdF4y2Ba (GYdF4y2Ba TGYdF4y2Ba )GYdF4y2Ba 罪GYdF4y2Ba (GYdF4y2Ba 2.GYdF4y2Ba TGYdF4y2Ba )GYdF4y2Ba . 功能must accept two inputs forTGYdF4y2Ba和GYdF4y2BaYGYdF4y2Ba.GYdF4y2Ba

y ' = @(t,y) -2*y + 2*cos(t) *sin(2*t);GYdF4y2Ba

在这个范围内创建一个包含不同初始条件的向量GYdF4y2Ba [GYdF4y2Ba -GYdF4y2Ba 5.GYdF4y2Ba ,GYdF4y2Ba 5.GYdF4y2Ba ]GYdF4y2Ba .GYdF4y2Ba

y0=-5:5;GYdF4y2Ba

求解时间间隔内每个初始条件的方程GYdF4y2Ba [GYdF4y2Ba 0GYdF4y2Ba ,GYdF4y2Ba 3.GYdF4y2Ba ]GYdF4y2Ba 使用GYdF4y2Ba数值GYdF4y2Ba.GYdF4y2Ba

Tspan = [0 3];[t、y] =数值(yprime tspan, y0);GYdF4y2Ba

策划的结果。GYdF4y2Ba

情节(t, y)网格GYdF4y2Ba在GYdF4y2Ba包含(GYdF4y2Ba“不”GYdF4y2Ba) ylabel (GYdF4y2Ba“y”GYdF4y2Ba)标题(GYdF4y2Ba”金宝搏官方网站解决方案(y = 2 y + 2 cos (t) sin (2 t), y(0) = 5, 4,…,4、5 'GYdF4y2Ba,GYdF4y2Ba“翻译”GYdF4y2Ba,GYdF4y2Ba“乳胶”GYdF4y2Ba)GYdF4y2Ba

图中包含一个轴。标题解为y'=-2y+2 cos(t)sin(2t),y(0)=-5,-4金宝搏官方网站,…,4,5的轴包含11个线型对象。GYdF4y2Ba

这种方法对于求解具有几个初始条件的简单ode是有用的。然而,这种技术也有一些权衡:GYdF4y2Ba

  • 无法求解具有多个初始条件的方程组。该技术仅在求解具有多个初始条件的一个方程时有效。GYdF4y2Ba

  • 解算器在每一步选择的时间步长基于系统中需要采取最小步长的方程。这意味着解算器可以采取小步来满足一个初始条件下的方程,但其他方程如果单独求解,将使用不同的步长。尽管如此,解算多个初始条件同时使用离子通常比单独使用一个GYdF4y2Ba对于GYdF4y2Ba循环。GYdF4y2Ba

考虑具有时间相关参数的以下ODEGYdF4y2Ba

$ f(t)y(t) = g(t).$GYdF4y2Ba

初始条件为GYdF4y2Bay_0 = 1美元GYdF4y2Ba. 功能GYdF4y2Baf (t)GYdF4y2Ba由n×1向量定义GYdF4y2BaFGYdF4y2Ba评估有时GYdF4y2Ba英尺GYdF4y2Ba. 功能GYdF4y2Bag (t)GYdF4y2Ba由m-x-1向量定义GYdF4y2BaGGYdF4y2Ba评估有时GYdF4y2BagtGYdF4y2Ba.GYdF4y2Ba

创建向量GYdF4y2BaFGYdF4y2Ba和GYdF4y2BaGGYdF4y2Ba.GYdF4y2Ba

ft=linspace(0,5,25);f=英尺^2-英尺-3;gt=linspace(1,6,25);g=3*sin(gt-0.25);GYdF4y2Ba

编写一个名为GYdF4y2BamyodeGYdF4y2Ba二者GYdF4y2BaFGYdF4y2Ba和GYdF4y2BaGGYdF4y2Ba以获取在指定时间内与时间有关的项的值。将函数保存在当前文件夹中,以运行示例的其余部分。GYdF4y2Ba

这个GYdF4y2BamyodeGYdF4y2Ba函数接受额外的输入参数来计算每个时间步骤的ODE,但是GYdF4y2Ba数值GYdF4y2Ba只使用前两个输入参数GYdF4y2BaTGYdF4y2Ba和GYdF4y2BaYGYdF4y2Ba.GYdF4y2Ba

函数GYdF4y2Bay = myode(t,y,ft,f,gt,g) f = interp1(ft,f,t)GYdF4y2Ba%在时间t时插值数据集(ft,f)GYdF4y2Bag = interp1 (gt, g, t);GYdF4y2Ba%在时间t时插值数据集(gt,g)GYdF4y2Badydt=-f*y+g;GYdF4y2Ba%在时间t计算ODEGYdF4y2Ba

在时间间隔内求解方程GYdF4y2Ba(1 - 5)GYdF4y2Ba使用GYdF4y2Ba数值GYdF4y2Ba.使用函数句柄指定函数,以便GYdF4y2Ba数值GYdF4y2Ba的前两个输入参数GYdF4y2BamyodeGYdF4y2Ba.另外,使用GYdF4y2BaodesetGYdF4y2Ba.GYdF4y2Ba

Tspan = [1 5];ic = 1;选择= odeset (GYdF4y2Ba“雷托”GYdF4y2Ba1飞行,GYdF4y2Ba“AbsTol”GYdF4y2Ba1的军医);[t、y] =数值(@ (t, y) myode (t, y,英国《金融时报》,f, gt, g), tspan,集成电路,选择);GYdF4y2Ba

画出解决方案,GYdF4y2BaYGYdF4y2Ba,作为时间点的函数,GYdF4y2BaTGYdF4y2Ba.GYdF4y2Ba

情节(t, y)GYdF4y2Ba

范德波尔方程是一个二阶常微分方程GYdF4y2Ba

YGYdF4y2Ba 1.GYdF4y2Ba ′GYdF4y2Ba ′GYdF4y2Ba -GYdF4y2Ba μGYdF4y2Ba (GYdF4y2Ba 1.GYdF4y2Ba -GYdF4y2Ba YGYdF4y2Ba 1.GYdF4y2Ba 2.GYdF4y2Ba )GYdF4y2Ba YGYdF4y2Ba 1.GYdF4y2Ba ′GYdF4y2Ba +GYdF4y2Ba YGYdF4y2Ba 1.GYdF4y2Ba =GYdF4y2Ba 0GYdF4y2Ba .GYdF4y2Ba

用GYdF4y2Ba μGYdF4y2Ba =GYdF4y2Ba 1.GYdF4y2Ba 使用GYdF4y2Ba数值GYdF4y2Ba. 功能GYdF4y2Bavdp1.mGYdF4y2BaMATLAB®随附并对方程进行编码。指定单个输出以返回包含有关解决方案信息的结构,例如解算器和计算点。GYdF4y2Ba

tspan=[020];y0=[20];sol=ode45(@vdp1,tspan,y0)GYdF4y2Ba
索尔=GYdF4y2Ba结构体字段:GYdF4y2Ba解算器:“ode45”extdata:[1x1结构]x:[1x60双精度]y:[2x60双精度]统计信息:[1x1结构]idata:[1x1结构]GYdF4y2Ba

使用GYdF4y2BalinspaceGYdF4y2Ba在间隔中生成250个点GYdF4y2Ba20 [0]GYdF4y2Ba.在这些点使用评估解决方案GYdF4y2Ba德瓦尔GYdF4y2Ba.GYdF4y2Ba

x = linspace (0, 20250);y =德瓦尔(溶胶,x);GYdF4y2Ba

画出解的第一个分量。GYdF4y2Ba

图(x,y(1,:))GYdF4y2Ba

图中包含一个坐标轴。轴包含一个线型对象。GYdF4y2Ba

将解决方案扩展到GYdF4y2Ba TGYdF4y2Ba FGYdF4y2Ba =GYdF4y2Ba 3.GYdF4y2Ba 5.GYdF4y2Ba 使用GYdF4y2BaodextendGYdF4y2Ba并将结果添加到原始绘图中。GYdF4y2Ba

sol_new = odextend (sol @vdp1 35);x = linspace (35350);y =德瓦尔(sol_new x);持有GYdF4y2Ba在GYdF4y2Ba图(x,y(1,:),GYdF4y2Ba“r”GYdF4y2Ba)GYdF4y2Ba

图中包含一个坐标轴。轴线包含2个线型对象。GYdF4y2Ba

输入参数GYdF4y2Ba

全部折叠GYdF4y2Ba

要解决的函数,指定为函数句柄,该句柄定义要集成的函数。GYdF4y2Ba

这个函数GYdF4y2Badydt = odefun (t, y)GYdF4y2Ba,对于标量GYdF4y2BaTGYdF4y2Ba还有一个列向量GYdF4y2BaYGYdF4y2Ba,必须返回列向量GYdF4y2BadydtGYdF4y2Ba的数据类型GYdF4y2Ba单GYdF4y2Ba或GYdF4y2Ba双GYdF4y2Ba对应于GYdF4y2Ba FGYdF4y2Ba (GYdF4y2Ba TGYdF4y2Ba ,GYdF4y2Ba YGYdF4y2Ba )GYdF4y2Ba .GYdF4y2BaodefunGYdF4y2Ba必须接受两个输入参数,GYdF4y2BaTGYdF4y2Ba和GYdF4y2BaYGYdF4y2Ba,即使其中一个参数没有在函数中使用。GYdF4y2Ba

例如,解决GYdF4y2Ba YGYdF4y2Ba 'GYdF4y2Ba =GYdF4y2Ba 5.GYdF4y2Ba YGYdF4y2Ba −GYdF4y2Ba 3.GYdF4y2Ba ,使用功能:GYdF4y2Ba

函数dydt = odefun(t,y) dydt = 5*y-3;GYdF4y2Ba

对于方程组,输出GYdF4y2BaodefunGYdF4y2Ba是一个向量。向量中的每一个元素都是一个方程的解。例如,解决GYdF4y2Ba

YGYdF4y2Ba 'GYdF4y2Ba 1.GYdF4y2Ba =GYdF4y2Ba YGYdF4y2Ba 1.GYdF4y2Ba +GYdF4y2Ba 2.GYdF4y2Ba YGYdF4y2Ba 2.GYdF4y2Ba YGYdF4y2Ba 'GYdF4y2Ba 2.GYdF4y2Ba =GYdF4y2Ba 3.GYdF4y2Ba YGYdF4y2Ba 1.GYdF4y2Ba +GYdF4y2Ba 2.GYdF4y2Ba YGYdF4y2Ba 2.GYdF4y2Ba

使用功能:GYdF4y2Ba

函数dydt = odefun(t,y) dydt = 0,1;dydt (1) = (1) + 2 * y (2);dydt (2) = 3 * y (1) + 2 * y (2);GYdF4y2Ba

有关如何向函数提供附加参数的信息GYdF4y2BaodefunGYdF4y2Ba看见GYdF4y2Ba参数化函数GYdF4y2Ba.GYdF4y2Ba

例子:GYdF4y2Ba@myFcnGYdF4y2Ba

数据类型:GYdF4y2Ba功能手柄GYdF4y2Ba

积分间隔,指定为向量。至少,GYdF4y2BatspanGYdF4y2Ba一定是两个元素的向量GYdF4y2Ba(t0 tf)GYdF4y2Ba指定初始和最终时间。在特定的时间内得到溶金宝搏官方网站液GYdF4y2Bat0GYdF4y2Ba和GYdF4y2Ba特遣部队GYdF4y2Ba,使用较长的形式向量GYdF4y2Ba(t0, t1, t2,…,tf)GYdF4y2Ba.中的元素GYdF4y2BatspanGYdF4y2Ba要么都在增加,要么都在减少。GYdF4y2Ba

求解器将给出的初始条件强加于GYdF4y2Bay0GYdF4y2Ba在最初的时候GYdF4y2Batspan (1)GYdF4y2Ba,然后从GYdF4y2Batspan (1)GYdF4y2Ba来GYdF4y2Ba(完)GYdF4y2Ba:GYdF4y2Ba

  • 如果GYdF4y2BatspanGYdF4y2Ba有两个要素,,GYdF4y2Ba(t0 tf)GYdF4y2Ba,然后解算器返回在间隔内的每个内部积分步骤处计算的解决方案。GYdF4y2Ba

  • 如果GYdF4y2BatspanGYdF4y2Ba有两个以上的元素GYdF4y2Ba(t0, t1, t2,…,tf)GYdF4y2Ba,则求解器返回在给定点处求值的解。但是,求解器并不精确地步进到GYdF4y2BatspanGYdF4y2Ba.相反,求解器使用它自己的内部步骤来计算解,然后在请求的点上计算解GYdF4y2BatspanGYdF4y2Ba. 在指定点金宝搏官方网站产生的解与在每个内部步骤计算的解具有相同的精度顺序。GYdF4y2Ba

    指定几个中间点对计算效率几乎没有影响,但对于大型系统来说,它会影响内存管理。GYdF4y2Ba

价值观GYdF4y2BatspanGYdF4y2Ba是由求解器用来计算合适的值GYdF4y2BaInitialStepGYdF4y2Ba和GYdF4y2BaMaxStepGYdF4y2Ba:GYdF4y2Ba

  • 如果GYdF4y2BatspanGYdF4y2Ba包含几个中间点GYdF4y2Ba(t0, t1, t2,…,tf)GYdF4y2Ba,则指定的点给出了问题的规模指示,这可以影响值GYdF4y2BaInitialStepGYdF4y2Ba由求解器使用。因此,求解器获得的解可能会因您是否指定而不同GYdF4y2BatspanGYdF4y2Ba作为一个二元素向量或作为一个中间点的向量。GYdF4y2Ba

  • 中的初始值和最终值GYdF4y2BatspanGYdF4y2Ba用于计算最大步长GYdF4y2BaMaxStepGYdF4y2Ba.因此,改变初始值或最终值GYdF4y2BatspanGYdF4y2Ba可能导致求解器使用不同的步骤序列,这可能会改变解决方案。GYdF4y2Ba

例子:GYdF4y2Ba[1 10]GYdF4y2Ba

例子:GYdF4y2Ba[1 3 5 7 9 10]GYdF4y2Ba

数据类型:GYdF4y2Ba单GYdF4y2Ba|GYdF4y2Ba双GYdF4y2Ba

初始条件,指定为向量。GYdF4y2Bay0GYdF4y2Ba必须和向量的输出长度相同GYdF4y2BaodefunGYdF4y2Ba,所以GYdF4y2Bay0GYdF4y2Ba包含中定义的每个方程的初始条件GYdF4y2BaodefunGYdF4y2Ba.GYdF4y2Ba

数据类型:GYdF4y2Ba单GYdF4y2Ba|GYdF4y2Ba双GYdF4y2Ba

选项结构,指定为结构数组。使用GYdF4y2BaodesetGYdF4y2Ba函数创建或修改选项结构。看到GYdF4y2BaODE选项摘要GYdF4y2Ba获取与每个求解器兼容的选项列表。GYdF4y2Ba

例子:GYdF4y2Ba选项=odeset('RelTol',1e-5,'Stats','on','OutputFcn',@odeplot)GYdF4y2Ba的相对容错GYdF4y2Ba1 e-5GYdF4y2Ba,打开求解器统计信息的显示,并指定输出函数GYdF4y2Ba@odeplotGYdF4y2Ba将计算出来的解画出来。GYdF4y2Ba

数据类型:GYdF4y2Ba结构体GYdF4y2Ba

输出参数GYdF4y2Ba

全部折叠GYdF4y2Ba

计算点,作为列向量返回。GYdF4y2Ba

  • 如果GYdF4y2BatspanGYdF4y2Ba包含两个元素,GYdF4y2Ba(t0 tf)GYdF4y2Ba那么GYdF4y2BaTGYdF4y2Ba包含用于执行集成的内部评估点。GYdF4y2Ba

  • 如果GYdF4y2BatspanGYdF4y2Ba包含两个以上的元素,则GYdF4y2BaTGYdF4y2Ba是一样的GYdF4y2BatspanGYdF4y2Ba.GYdF4y2Ba

金宝搏官方网站解决方案,作为数组返回。在每一行GYdF4y2BaYGYdF4y2Ba的对应行中返回值处的解决方案GYdF4y2BaTGYdF4y2Ba.GYdF4y2Ba

事件的时间,作为列向量返回。事件的时间GYdF4y2BateGYdF4y2Ba对应于返回的解金宝搏官方网站GYdF4y2Ba叶GYdF4y2Ba,GYdF4y2Ba即GYdF4y2Ba指定发生的事件。GYdF4y2Ba

事件发生时的解决方案,作为数组返回。事件的时间GYdF4y2BateGYdF4y2Ba对应于返回的解金宝搏官方网站GYdF4y2Ba叶GYdF4y2Ba,GYdF4y2Ba即GYdF4y2Ba指定发生的事件。GYdF4y2Ba

触发事件函数的索引,作为列向量返回。中的事件时间GYdF4y2BateGYdF4y2Ba对应于返回的解金宝搏官方网站GYdF4y2Ba叶GYdF4y2Ba,GYdF4y2Ba即GYdF4y2Ba指定发生的事件。GYdF4y2Ba

结构,作为结构数组返回。在the中使用这个结构GYdF4y2Ba德瓦尔GYdF4y2Ba函数来求区间内任意点的解GYdF4y2Ba(t0 tf)GYdF4y2Ba.这个GYdF4y2Ba索尔GYdF4y2Ba结构数组总是包含以下字段:GYdF4y2Ba

结构域GYdF4y2Ba 描述GYdF4y2Ba

sol.xGYdF4y2Ba

由求解器选择的步骤的行向量。GYdF4y2Ba

sol.yGYdF4y2Ba

金宝搏官方网站解决方案。每一列GYdF4y2Basol.y(:,我)GYdF4y2Ba包含时间的解决方案GYdF4y2Basol.x(i)GYdF4y2Ba.GYdF4y2Ba

sol.solverGYdF4y2Ba

解算器的名字。GYdF4y2Ba

此外,如果指定GYdF4y2Ba事件GYdF4y2Ba然后检测选项和事件GYdF4y2Ba索尔GYdF4y2Ba还包括以下字段:GYdF4y2Ba

结构域GYdF4y2Ba 描述GYdF4y2Ba

sol.xeGYdF4y2Ba

事件发生的时间点。GYdF4y2Basol.xe(结束)GYdF4y2Ba包含终端事件的确切点(如果有)。GYdF4y2Ba

sol.yeGYdF4y2Ba

金宝搏官方网站中的事件对应的解决方案GYdF4y2Basol.xeGYdF4y2Ba.GYdF4y2Ba

索利GYdF4y2Ba

函数中指定的函数返回的向量的索引GYdF4y2Ba事件GYdF4y2Ba选项这些值指示解算器检测到的事件。GYdF4y2Ba

算法GYdF4y2Ba

数值GYdF4y2Ba是基于一个明确的龙格-库塔(4,5)公式,即休眠-王子对。它是一个单步计算求解器GYdF4y2Bay (tGYdF4y2BaNGYdF4y2Ba)GYdF4y2Ba,它只需要前一个时间点的解,GYdF4y2Bay (tGYdF4y2Ban - 1GYdF4y2Ba)GYdF4y2Ba[1]GYdF4y2Ba,GYdF4y2Ba[2]GYdF4y2Ba.GYdF4y2Ba

参考文献GYdF4y2Ba

[1] Dormad,J.R.和P.J.Prince,“嵌入龙格库塔公式的家族,”GYdF4y2Baj . Comp .。数学。GYdF4y2Ba,1980年第6卷,第19-26页。GYdF4y2Ba

[2] Shampine,L.F.和M.W.Reichert,“GYdF4y2BaMATLAB ODE套件GYdF4y2Ba”,GYdF4y2Ba暹罗科学计算杂志GYdF4y2Ba,第18卷,1997年,第1-22页。GYdF4y2Ba

扩展功能GYdF4y2Ba

之前介绍过的R2006aGYdF4y2Ba