文档帮助中心文档
求解中等刚度ODE和DAE-梯形规则
[t、y] = ode23t (odefun tspan, y0)
[t,y]=ode23t(odefun,tspan,y0,选项)
[t y te,你们()= ode23t (odefun tspan, y0,选项)
索尔= ode23t (___)
例子
[t,y) = ode23t (odefun,茨潘,y0)哪里tspan=[t0-tf],集成了微分方程组 y ' = f ( t , y ) 从…起t0到特遣部队与初始条件y0。解决方案数组中的每一行y对应于列向量中返回的值t.
[t,y) = ode23t (odefun,茨潘,y0)
t
y
odefun
茨潘
y0
tspan=[t0-tf]
t0
特遣部队
所有MATLAB®ODE求解器可以求解这种形式的方程组 y ' = f ( t , y ) ,或涉及质量矩阵的问题, 米 ( t , y ) y ' = f ( t , y ) . 解算器都使用类似的语法。这个ode23s求解器只能在质量矩阵是常数的情况下求解质量矩阵问题。ode15s和ode23t可以解决质量矩阵奇异的问题,称为微分代数方程(DAE)。使用以下命令指定质量矩阵:大量选择odeset.
ode23s
ode15s
ode23t
大量
odeset
[t,y) = ode23t (odefun,茨潘,y0,选择权)还使用定义的集成设置选择权,它是使用odeset函数。例如,使用theAbsol和RelTol用于指定绝对和相对误差公差的选项,或大量选择提供质量矩阵。
[t,y) = ode23t (odefun,茨潘,y0,选择权)
选择权
Absol
RelTol
[t,y,te,耶,即) = ode23t (odefun,茨潘,y0,选择权)另外查找函数的位置(t,y),称为事件函数,为零。在输出中,te是事件发生的时间,耶解决方案是在事件发生的时候吗即是被触发事件的索引。
[t,y,te,耶,即) = ode23t (odefun,茨潘,y0,选择权)
te
耶
即
对于每个事件函数,指定积分是否在零处终止,以及过零的方向是否重要。通过设置“事件”属性设置为函数,例如myEventFcn或@myEventFcn,并创建相应的函数:[价值,isterminal,方向]=myEventFcn(t,y).有关更多信息,请参见ODE事件位置.
“事件”
myEventFcn
@myEventFcn
价值
isterminal
方向
索尔= ode23t (___)返回可以使用的结构德瓦尔在区间上的任意点计算解(t0 tf).您可以在前面的语法中使用任何输入参数组合。
索尔
德瓦尔
(t0 tf)
全部折叠
具有单个解决方案组件的简单ODE可以在对解算器的调用中指定为匿名函数。匿名函数必须接受两个输入(t, y),即使其中一个输入没有在函数中使用。
(t, y)
解赋
y ” = - 1 0 t .
指定的时间间隔为(0 - 2)以及初始条件y0 = 1.
(0 - 2)
y0 = 1
tspan=[02];y0=1;[t,y]=ode23t(@(t,y)-10*t,tspan,y0);
策划解决方案。
情节(t y“o”)
刚性方程组的一个例子是松弛振荡中的范德波尔方程。极限环有一些区域,其中解的分量变化缓慢,问题相当僵硬,与变化非常剧烈的区域交替出现,而这些区域并不僵硬。
方程组为:
初始条件为和.这个函数vdp1000附带MATLAB®和编码的方程。
vdp1000
函数dydt = vdp1000 (t, y)%VDP1000评估mu=1000的范德极。%%另见ODE15S、ODE23S、ODE23T、ODE23TB。亚采克·基尔赞卡和劳伦斯·f·沙宾版权所有1984-2014 The MathWorks, Inc.dydt=[y(2);1000*(1-y(1)^2)*y(2)-y(1)];
使用数值默认的相对和绝对误差公差(1e-3和1e-6)非常慢,需要几分钟来求解和绘制解决方案。数值由于难以满足公差的刚度区域,需要数百万个时间步才能完成集成。
数值
1e-3
1e-6
这是一个解的图数值,这需要很长时间来计算。注意通过刚性区域需要大量的时间步骤。
解刚性系统使用ode23t然后画出解的第一列y与时间点相对t.的ode23t解算器通过刚性区域的步数远远少于数值.
[t,y] = ode23t(@vdp1000,[0 3000],[2 0]);情节(t y (: 1),“o”)
ode23t仅适用于使用两个输入参数的函数,t和y.但是,您可以通过在函数外部定义参数并在指定函数句柄时传入参数来传递额外的参数。
将方程改写为一阶系统会产生
odefcn.m将这个方程组表示为接受四个输入参数的函数:t,y,一个,B.
odefcn.m
一个
B
函数= odefcn(t,y,A,B)dydt (1) = y (2);dydt (2) = (A / B) * t。* y (1);
使用ode23t. 指定函数句柄,以便它传入函数的预定义值一个和B到奥德芬.
奥德芬
= 1;B = 2;Tspan = [0 5];Y0 = [0 0 0];[t、y] = ode23t (@ (t, y) odefcn (t, y, A、B), tspan, y0);
策划的结果。
情节(t y (: 1),“o”、t、y (:, 2),“-”。)
的ode15s对于大多数僵硬的问题,解算器是很好的首选。但是,对于某些类型的问题,其他刚性解算器可能更有效。此示例使用所有四个刚性ODE解算器解算刚性测试方程。
考虑测试方程
y ” = - λ y .
随着地震的震级增加,方程变得越来越僵硬 λ 增加。使用 λ = 1 × 1 0 9 以及初始条件 y ( 0 ) = 1 在这个时间间隔内[0 0.5].有了这些值,问题就足够严峻了数值和ode23努力积分方程。此外,使用odeset传递常数雅可比矩阵 J = ∂ f ∂ y = - λ 并打开解算器统计信息的显示。
[0 0.5]
ode23
λ= 1 e9;y0 = 1;Tspan = [0 0.5];选择= odeset (“雅可比”,-lambda,“统计数据”,“上”);
用…解方程ode15s,ode23s,ode23t,ode23tb.制作副图进行比较。
ode23tb
Subplot (2,2,1) tic, ode15s(@(t,y) -lambda*y, tspan, y0, opts), toc
104个成功的步骤1个失败的尝试212个函数计算0个偏导数21个LU分解210个线性系统的解运行时间为1.505900秒。万博 尤文图斯
头衔(“ode15s”)子批次(2,2,2)tic,ode23s(@(t,y)-lambda*y,tspan,y0,opts),toc
63次成功步骤0次失败尝试191次函数求值0次偏导数63次LU分解189次线性系统的解耗时为0.439813秒。万博 尤文图斯
头衔(“ode23s”)子图(2,2,3)tic, ode23t(@(t,y) -lambda*y, tspan, y0, opts), toc
95成功的步骤0失败的尝试125函数求值0偏导数28 LU分解123线性系统的解经过的时间为0.598499秒。万博 尤文图斯
头衔(“ode23t”)子图(2,2,4)tic, ode23tb(@(t,y) -lambda*y, tspan, y0, opts), toc
71个成功的步骤0失败的尝试167函数计算0偏导数23 LU分解236个线性系统的解运行时间为0.600518秒。万博 尤文图斯
头衔(“ode23tb”)
呆板的求解者都表现得很好,但是ode23s对于这个特定的问题,以最少的步骤和最快的速度完成集成。由于常数雅可比矩阵是指定的,没有一个求解器需要计算偏导数来计算解。指定雅可比矩阵的好处ode23s因为它通常在每一步计算雅可比矩阵。
对于一般的刚性问题,刚性求解器的性能取决于问题的格式和指定的选项。提供雅可比矩阵或稀疏模式总是提高求解困难问题的效率。但由于刚性求解器使用的雅可比矩阵不同,改进可能会有很大的不同。在实际应用中,如果一个方程组非常庞大或需要多次求解,那么研究不同求解器的性能以减少执行时间是值得的。
要解决的函数,指定为定义要集成的函数的函数句柄。
这个函数dydt=odefun(t,y),对于标量t和一个列向量y,必须返回列向量dydt的数据类型单或双重的对应于 f ( t , y ) .odefun必须接受两个输入参数t和y,即使其中一个参数没有在函数中使用。
dydt=odefun(t,y)
dydt
单
双重的
例如,解决 y ' = 5 y − 3. ,使用以下功能:
函数Dydt = odefun(t,y);结束
对于方程组,的输出odefun是一个向量。向量中的每一个元素都是一个方程的解。例如,解决
y ' 1 = y 1 + 2 y 2 y ' 2 = 3. y 1 + 2 y 2
使用以下功能:
函数Dydt = odefun(t,y) Dydt = 0,1;dydt (1) = (1) + 2 * y (2);dydt (2) = 3 * y (1) + 2 * y (2);结束
有关如何向函数提供附加参数的信息odefun,请参阅参数化功能.
例子:@myFcn
@myFcn
数据类型:function_handle
function_handle
积分间隔,指定为向量。至少茨潘一定是一个二元向量(t0 tf)指定初始和最终时间。在以下时间之间的特定时间获得解决方案:万博 尤文图斯t0和特遣部队,使用较长的形式向量(t0, t1, t2,…,tf).中的元素茨潘要么都在增加,要么都在减少。
(t0, t1, t2,…,tf)
求解器将给出的初始条件强加于y0在最初的时候tspan (1),然后从tspan (1)到tspan(结束):
tspan (1)
tspan(结束)
如果茨潘有两个元素(t0 tf),则求解器返回该区间内每个内部积分步骤计算的解。
如果茨潘有两个以上的元素(t0, t1, t2,…,tf),然后解算器返回在给定点处计算的解。但是,解算器不会精确步进到中指定的每个点茨潘.相反,求解器使用自己的内部步骤来计算解,然后在请求的点上计算解茨潘.在指定的万博 尤文图斯点上产生的解与在每个内部步骤上计算的解具有相同的精度顺序。
指定几个中间点对计算效率影响不大,但会影响大型系统的内存管理。
的值茨潘由解算器用于计算的合适值InitialStep和MaxStep:
InitialStep
MaxStep
如果茨潘包含几个中间点(t0, t1, t2,…,tf),则指定的点给出了问题的规模指示,这可以影响值InitialStep由求解器使用。因此,求解器获得的解可能会因您是否指定而不同茨潘作为一个二元素向量或作为一个中间点的向量。
中的初始值和最终值茨潘用于计算最大步长MaxStep.因此,改变初始值或最终值茨潘可能导致求解器使用不同的步骤序列,这可能会改变解。
例子:10 [1]
10 [1]
例子:[1 3 5 7 9 10]
[1 3 5 7 9 10]
数据类型:单|双重的
初始条件,指定为向量。y0必须与的向量输出长度相同odefun,所以y0中定义的每个方程的初始条件odefun.
选项结构,指定为结构数组。使用odeset函数创建或修改选择权结构。看到ODE选项摘要获取与每个求解器兼容的选项列表。
例子:选项= odeset (e-5 RelTol, 1,“统计”,“对”,“OutputFcn”,@odeplot)指定的相对误差容限为1e-5,打开求解器统计信息的显示,并指定输出函数@odeplot在计算时绘制解决方案。
选项= odeset (e-5 RelTol, 1,“统计”,“对”,“OutputFcn”,@odeplot)
1e-5
@odeplot
数据类型:结构体
结构体
计算点,作为列向量返回。
如果茨潘包含两个元素(t0 tf),然后t包含用于执行集成的内部评估点。
如果茨潘包含两个以上的元素t是一样的茨潘.
万博 尤文图斯解决方案,作为数组返回。中的每一行y的对应行中返回值处的解决方案t.
事件的时间,作为列向量返回。事件的时间te对应于返回的解万博 尤文图斯耶,即指定发生的事件。
事件发生时的解决方案,作为数组返回。事件的时间te对应于返回的解万博 尤文图斯耶,即指定发生的事件。
触发事件函数的索引,作为列向量返回。事件的时间te对应于返回的解万博 尤文图斯耶,即指定发生的事件。
用于求值的结构,作为结构数组返回。将此结构与德瓦尔函数来求区间内任意点的解(t0 tf).的索尔结构数组始终包含以下字段:
sol.x
由求解器选择的步骤的行向量。
sol.y
万博 尤文图斯解决方案。每一列sol.y(:,i)包含时间的解决方案sol.x(我).
sol.y(:,i)
sol.x(我)
sol.solver
解算器的名字。
此外,如果指定事件选择odeset然后检测事件索尔还包括以下字段:
事件
sol.xe
事件发生的时间点。sol.xe(结束)包含终端事件的确切点(如果有的话)。
sol.xe(结束)
索尔·叶
万博 尤文图斯与中的事件对应的解决方案sol.xe.
sol.ie
函数中指定的函数返回的向量的索引事件选择。这些值指示求解器检测到的事件。
ode23t是一个使用“自由”插值的梯形规则的实现。这个解算器是首选ode15s如果问题刚度适中,需要一个没有数值阻尼的解。ode23t还可以解微分代数方程(DAE)[1],[2].
L. F., M. W. Reichelt, J.A. Kierzenka, "在MATLAB和Simulink中求解索引-1 DAE万博1manbetx",暹罗审查, 1999年第41卷,第538-552页。
[2] Shampine, L. F. and M. E. Hosea,“TR-BDF2的分析与实现”,应用数值数学20, 1996年。
ode15s|odeset|奥德杰|德瓦尔
奥德杰
您拥有此示例的修改版本。是否要用编辑打开此示例?
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
选择一个网站以获取翻译后的内容(如果可用),并查看本地活动和优惠。根据您的位置,我们建议您选择:.
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系当地办事处