ode89
求解该微分方程——高阶方法
语法
描述
例子
歌唱与单一的解决方案组件
简单的常微分方程,也可以指定一个单一的解决方案组件在调用解决一个匿名函数。匿名函数必须接受两个输入(t, y)
,即使一个不使用输入的函数。
解决歌唱
指定的时间间隔[0 5]
和初始条件y0 = 0
。
tspan = [0 5];y0 = 0;[t、y] = ode89 (@ (t, y) 2 * t, tspan, y0);
策划解决方案。
情节(t y“o”)
解该方程
范德波尔方程是二阶的颂歌
在哪里 是一个标量参数。重写这个方程作为一个系统的一阶常微分方程进行替换 。结果系统的一阶常微分方程
函数文件vdp1.m
代表了范德波尔方程使用
。的变量
和
的条目y (1)
和y (2)
双元素的向量dydt
。
函数dydt = vdp1 (t, y)% VDP1评估μ= 1的范德堡尔常微分方程%%参见ODE113 ODE23,数值。% Jacek Kierzenka和劳伦斯·f·Shampine% 1984 - 2014版权MathWorks公司。dydt = [y (2);(1 y (1) ^ 2) * y (2) - y (1)];
解决ODE使用ode89
时间间隔的函数20 [0]
与初始值[2 0]
。由此产生的输出是一个列向量的时间点t
和一系列的解决方案y
。在每一行y
对应于一个时间返回相应的行t
。第一列的y
对应于
,第二列对应
。
[t、y] = ode89 (@vdp1 20 [0], [2;0]);
画出解决方案金宝搏官方网站
和
对t
。
情节(t y (: 1),“o”、t、y (:, 2),“o”)标题(范德波尔方程的解与ODE89(\μ= 1));包含(“t”);ylabel (“解决方案y”);传奇(“y_1”,“y_2”)
传递额外的参数赋函数
ode89
只能使用两个输入参数的函数,t
和y
。不过,您可以通过额外参数通过定义外部函数和传递他们当你指定函数处理。
解决歌唱
重写方程一阶系统产量
odefcn
本地函数在这个例子中,将这个方程组表示为一个函数,接受四个输入参数:t
,y
,一个
,B
。
函数dydt = odefcn (t y, B) dydt = 0 (2, 1);dydt (1) = y (2);dydt (2) = (A / B) * t。* y (1);结束
解决ODE使用ode89
。指定函数处理,通过预定义的值一个
和B
来odefcn
。
= 1;B = 2;tspan = [0 5];y0 = 0.01 [0];[t、y] = ode89 (@ (t, y) odefcn (t, y, A、B), tspan, y0);
策划的结果。
情节(t y (: 1),“o”、t、y (:, 2),“-”。)
函数dydt = odefcn (t y, B) dydt = 0 (2, 1);dydt (1) = y (2);dydt (2) = (A / B) * t。* y (1);结束
歌唱与公差严格的错误
相比数值
,ode113
,ode78
,ode89
解决者更善于解决问题与公差严格的错误。一个共同的情况解决这些excel在轨道动力学问题,解曲线是光滑的,需要在每一步的解算器精度高。
双体问题考虑两个交互质量m1
和平方米
围绕一个共同的飞机。在这个例子中,群众之一是明显大于另一个。沉重的身体在原点,运动方程
在哪里
为了解决这个问题,首先转换为一个四阶常微分方程系统使用替换
替换产生一阶系统
twobodyode
本地函数包含在本例中,代码双体的方程组问题。
函数dy = twobodyode (t, y)%双体与一个质量比另一个更大的问题。r =√(1) ^ 2 + y (3) ^ 2);dy = [y (2);- y (1) / r ^ 3;y (4);- y (3) / r ^ 3);结束
解决常微分方程系统的使用ode89
。指定严格的误差公差1 e-13
为RelTol
和1 e-14
为AbsTol
。
选择= odeset (“Reltol”1 e-13“AbsTol”1 e-14“统计数据”,“上”);tspan =(0 10 *π);y0 = (2 0 0 0.5);[t、y] = ode89 (@twobodyode tspan, y0,选择);
243年成功步骤0失败5103评估函数
情节(t、y)传说(“x”,“x””,“y”,“y””,“位置”,“东南”)标题(组件的位置和速度的)
图绘制(y (: 1), y (:, 3),“o”,0,0,“罗”)轴平等的标题(“小质量的轨道”)
相比数值
,ode89
解算器能够获得解决方案更快和更少的步骤和功能评价。
函数dy = twobodyode (t, y)%双体与一个质量比另一个更大的问题。r =√(1) ^ 2 + y (3) ^ 2);dy = [y (2);- y (1) / r ^ 3;y (4);- y (3) / r ^ 3);结束
输入参数
odefun
- - - - - -函数来解决
函数处理
函数来解决,指定为一个函数处理,定义了功能集成。
这个函数dydt = odefun (t, y)
为一个标量t
和一个列向量y
必须返回一个列向量dydt
的数据类型单
或双
对应于
。odefun
必须接受输入参数t
和y
,即使一个不使用参数的函数。
例如,去解决 使用功能:
函数dydt = odefun (t, y) dydt = 5 * y-3;结束
一个方程组的输出odefun
是一个向量。向量中每个元素是一个方程的解。例如,去解决
使用功能:
函数dydt = odefun (t, y) dydt = 0 (2, 1);dydt (1) = (1) + 2 * y (2);dydt (2) = 3 * y (1) + 2 * y (2);结束
信息如何提供额外的参数的函数odefun
,请参阅参数化功能。
例子:@myFcn
数据类型:function_handle
tspan
- - - - - -间隔的集成
向量
间隔的集成,指定为一个向量。至少,tspan
必须是一个双元素向量(t0 tf)
指定初始和最终的时间。获得解决方案之间在特金宝搏官方网站定的时间t0
和特遣部队
,使用一个长向量的形式(t0, t1, t2,…, tf)
。中的元素tspan
必须所有增加或减少。
求解的初始条件y0
在最初的时间tspan (1)
,然后从集成tspan (1)
来tspan(结束)
:
如果
tspan
有两个元素(t0 tf)
,然后解算器返回每个内部集成的解决方案评估步骤间隔内。如果
tspan
有两个以上的元素(t0, t1, t2,…, tf)
,那么解算器返回给定的点解决方案评估。然而,解决不精确步中指定的每个点tspan
。相反,解算器使用自己内部的步骤来计算解决方案,然后评估请求的点的解决方案tspan
。在指定点金宝搏官方网站产生的解决方案相同的精确度在每个内部一步计算的解决方案。指定一些中间点对计算的效率几乎没有影响,但会影响大型系统的内存管理。
的值tspan
由求解器计算使用合适的值InitialStep
和MaxStep
:
如果
tspan
包含几个中间点(t0, t1, t2,…, tf)
,然后指定的点给的规模问题,它可以影响的价值InitialStep
解算器使用。因此,解决方案解决者可能获得的不同取决于您指定tspan
作为一个双元素向量或一个向量与中间点。初始和最终值
tspan
用于计算的最大步长MaxStep
。因此,改变初始或最终值tspan
可以使解算器使用一个不同的步骤序列,这可能改变的解决方案。
例子:10 [1]
例子:[1 3 5 7 9 10]
数据类型:单
|双
y0
- - - - - -初始条件
向量
初始条件,指定为一个向量。y0
必须相同长度的向量输出odefun
,所以y0
为每个方程中定义包含一个初始条件odefun
。
数据类型:单
|双
输出参数
t
——评估点
列向量
评估点,作为一个列向量返回。
如果
tspan
包含两个元素(t0 tf)
,然后t
包含用于执行内部评估点积分。如果
tspan
包含两个以上的元素t
是一样的tspan
。
y
——金宝搏官方网站解决方案
数组
金宝搏官方网站解决方案,作为一个数组返回。在每一行y
对应的解决方案在相应的行返回的值t
。
te
——时间的事件
列向量
时间的事件,作为一个列向量返回。事件在te
返回对应的解决方案金宝搏官方网站叶
,即
指定的事件发生。
叶
——解决方案时的事件
数组
事件的解决方案时,作为一个数组返回。事件在te
返回对应的解决方案金宝搏官方网站叶
,即
指定的事件发生。
即
——指数函数触发事件
列向量
指数函数触发事件,作为一个列向量返回。事件在te
返回对应的解决方案金宝搏官方网站叶
,即
指定的事件发生。
索尔
——结构评价
结构数组
结构评估,作为一个结构数组返回。使用这种结构德瓦尔
函数在任何点间隔评估解决方案(t0 tf)
。的索尔
结构数组都包含这些字段:
结构域 | 描述 |
---|---|
|
行向量的选择的解算器的步骤。 |
|
金宝搏官方网站解决方案。每一列 |
|
解算器的名字。 |
此外,如果你指定事件
选择odeset
和事件被检测到,那么索尔
还包括这些字段:
结构域 | 描述 |
---|---|
|
点事件发生时。 |
|
金宝搏官方网站对应于事件的解决方案 |
|
指数为返回的向量函数中指定 |
算法
ode89
是维尔纳的“最强大”的实现龙格-库塔9(8)和一个8阶连续扩展。解决方法是先进的9阶结果。8阶连续扩展需要五个额外的评估odefun
,但只有在需要插值的步骤。
引用
[1]维尔纳,j . h”数值优化与Interpolants龙格-库塔双。”数值算法53岁的没有。2 - 3(2010年3月):383 - 396。https://doi.org/10.1007/s11075 - 009 - 9290 - 3。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
所有
odeset
选项参数必须是常数。代码生成不支持一个常数选择结构的质量矩阵。金宝app提供一个质量矩阵函数。
你必须提供至少两个输出参数
T
和Y
。输入类型必须homogeneous-all双或单。
适应支持必须启用。金宝app代码生成需要时动态内存分配
tspan
有两个元素或您使用事件函数。
版本历史
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。