主要内容

ode78

求解该微分方程——高阶方法

描述

例子

(t,y)= ode78 (odefun,tspan,y0),在那里tspan = (t0 tf)集成系统的微分方程 y = f ( t , y ) t0特遣部队与初始条件y0。数组中的每一行解决方案y对应于一个返回值的列向量t

所有MATLAB®ODE解决可以解决系统方程的形式 y = f ( t , y ) ,或涉及质量矩阵的问题, ( t , y ) y = f ( t , y ) 。解决使用类似的语法。的ode23s质量矩阵解算器可以解决问题只有在质量矩阵是常数。ode15sode23t可以解决问题的质量矩阵是奇异的,称为微分方程(拓扑)。指定使用的质量矩阵质量选择odeset

(t,y)= ode78 (odefun,tspan,y0,选项)还使用集成设置定义的选项使用的创建,这是一个论点odeset函数。例如,设置AbsTolRelTol选项来指定绝对和相对误差公差,或者设置质量选项提供一个质量矩阵。

(t,y,te,,)= ode78 (odefun,tspan,y0,选项)另外发现的功能(t,y),称为事件函数,是零。在输出中,te事件的时间,是解决方案时的事件,然后呢触发事件的索引。

对于每个事件函数,指定是否终止的集成是一个零和零交叉的方向是否重要。通过设置的呢“事件”选择odeset一个函数,如myEventFcn@myEventFcn,并创建一个对应的功能:价值,isterminal,方向]=myEventFcn(t,y)。有关更多信息,请参见歌唱活动的位置

索尔= ode78 (___)返回一个结构,您可以使用德瓦尔评估解决方案在任何时候间隔(t0 tf)。您可以使用任何输入参数的组合在以前的语法。

例子

全部折叠

简单的常微分方程,也可以指定一个单一的解决方案组件在调用解决一个匿名函数。匿名函数必须接受两个输入(t, y),即使一个不使用输入的函数。

解决歌唱

y = 2 t

指定的时间间隔[0 5]和初始条件y0 = 0

tspan = [0 5];y0 = 0;[t、y] = ode78 (@ (t, y) 2 * t, tspan, y0);

策划解决方案。

情节(t y“o”)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

范德波尔方程是二阶的颂歌

y 1 - - - - - - μ ( 1 - - - - - - y 1 2 ) y 1 + y 1 = 0 ,

在哪里 μ > 0 是一个标量参数。重写这个方程作为一个系统的一阶常微分方程进行替换 y 1 = y 2 。结果系统的一阶常微分方程

y 1 = y 2 y 2 = μ ( 1 - - - - - - y 1 2 ) y 2 - - - - - - y 1

函数文件vdp1.m代表了范德波尔方程使用 μ = 1 。的变量 y 1 y 2 的条目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使用ode78时间间隔的函数20 [0]与初始值[2 0]。由此产生的输出是一个列向量的时间点t和一系列的解决方案y。在每一行y对应于一个时间返回相应的行t。第一列的y对应于 y 1 ,第二列对应 y 2

[t、y] = ode78 (@vdp1 20 [0], [2;0]);

画出解决方案金宝搏官方网站 y 1 y 2 t

情节(t y (: 1),“o”、t、y (:, 2),“o”)标题(范德波尔方程的解与ODE78(\μ= 1));包含(“t”);ylabel (“解决方案y”);传奇(“y_1”,“y_2”)

图包含一个坐标轴对象。坐标轴对象与标题S o l u v t i o n空白o f空白空白n d e r空白P l o空白e u t i o n空白(μ空白= 1)空白w i t h空白o d e 7 8包含2线类型的对象。这些对象代表y_1 y_2。

ode78只能使用两个输入参数的函数,ty。不过,您可以通过额外参数通过定义外部函数和传递他们当你指定函数处理。

解决歌唱

y = 一个 B t y

重写方程一阶系统产量

y 1 = y 2 y 2 = 一个 B t y 1

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使用ode78。指定函数处理,通过预定义的值一个Bodefcn

= 1;B = 2;tspan = [0 5];y0 = 0.01 [0];[t、y] = ode78 (@ (t, y) odefcn (t, y, A、B), tspan, y0);

策划的结果。

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

图包含一个坐标轴对象。坐标轴对象包含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平方米围绕一个共同的飞机。在这个例子中,群众之一是明显大于另一个。沉重的身体在原点,运动方程

x = - - - - - - x / r 3 y = - - - - - - y / r 3 ,

在哪里

r = x 2 + y 2

为了解决这个问题,首先转换为一个四阶常微分方程系统使用替换

y 1 = x y 2 = x y 3 = y y 4 = y

替换产生一阶系统

y 1 = y 2 y 2 = - - - - - - y 1 / r 3 y 3 = y 4 y 4 = - - - - - - y 3 / r 3

twobodyode本地函数包含在本例中,代码双体的方程组问题。

函数dy = twobodyode (t, y)%双体与一个质量比另一个更大的问题。r =√(1) ^ 2 + y (3) ^ 2);dy = [y (2);- y (1) / r ^ 3;y (4);- y (3) / r ^ 3);结束

解决常微分方程系统的使用ode78。指定严格的误差公差1 e-13RelTol1 e-14AbsTol

选择= odeset (“Reltol”1 e-13“AbsTol”1 e-14“统计数据”,“上”);tspan =(0 10 *π);y0 = (2 0 0 0.5);[t、y] = ode78 (@twobodyode tspan, y0,选择);
341年成功步骤0失败5797评估函数
情节(t、y)传说(“x”,“x””,“y”,“y””,“位置”,“东南”)标题(组件的位置和速度的)

图包含一个坐标轴对象。坐标轴对象与标题的位置和速度组件包含4线类型的对象。这些对象代表x, x, y, y。

图绘制(y (: 1), y (:, 3),“o”,0,0,“罗”)轴平等的标题(“小质量的轨道”)

图包含一个坐标轴对象。坐标轴对象标题轨道较小的质量包含2线类型的对象。

相比数值,ode78解算器能够获得解决方案更快和更少的步骤和功能评价。

函数dy = twobodyode (t, y)%双体与一个质量比另一个更大的问题。r =√(1) ^ 2 + y (3) ^ 2);dy = [y (2);- y (1) / r ^ 3;y (4);- y (3) / r ^ 3);结束

输入参数

全部折叠

函数来解决,指定为一个函数处理,定义了功能集成。

这个函数dydt = odefun (t, y)为一个标量t和一个列向量y必须返回一个列向量dydt的数据类型对应于 f ( t , y ) odefun必须接受输入参数ty,即使一个不使用参数的函数。

例如,去解决 y = 5 y 3 使用功能:

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

一个方程组的输出odefun是一个向量。向量中每个元素是一个方程的解。例如,去解决

y 1 = y 1 + 2 y 2 y 2 = 3 y 1 + 2 y 2

使用功能:

函数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必须是一个双元素向量(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由求解器计算使用合适的值InitialStepMaxStep:

  • 如果tspan包含几个中间点(t0, t1, t2,…, tf),然后指定的点给的规模问题,它可以影响的价值InitialStep解算器使用。因此,解决方案解决者可能获得的不同取决于您指定tspan作为一个双元素向量或一个向量与中间点。

  • 初始和最终值tspan用于计算的最大步长MaxStep。因此,改变初始或最终值tspan可以使解算器使用一个不同的步骤序列,这可能改变的解决方案。

例子:10 [1]

例子:[1 3 5 7 9 10]

数据类型:|

初始条件,指定为一个向量。y0必须相同长度的向量输出odefun,所以y0为每个方程中定义包含一个初始条件odefun

数据类型:|

选择结构,指定为一个结构数组。使用odeset函数来创建或修改选项结构。看到摘要歌唱选项选项列表的每个解算器兼容。

例子:选项= odeset (e-5 RelTol, 1,“统计”,“对”,“OutputFcn”, @odeplot)指定一个相对误差的宽容1 e-5打开显示的解算器统计数据,指定输出函数@odeplot绘制计算解决方案。

数据类型:结构体

输出参数

全部折叠

评估点,作为一个列向量返回。

  • 如果tspan包含两个元素(t0 tf),然后t包含用于执行内部评估点积分。

  • 如果tspan包含两个以上的元素t是一样的tspan

金宝搏官方网站解决方案,作为一个数组返回。在每一行y对应的解决方案在相应的行返回的值t

时间的事件,作为一个列向量返回。事件在te返回对应的解决方案金宝搏官方网站,指定的事件发生。

事件的解决方案时,作为一个数组返回。事件在te返回对应的解决方案金宝搏官方网站,指定的事件发生。

指数函数触发事件,作为一个列向量返回。事件在te返回对应的解决方案金宝搏官方网站,指定的事件发生。

结构评估,作为一个结构数组返回。使用这种结构德瓦尔函数在任何点间隔评估解决方案(t0 tf)。的索尔结构数组都包含这些字段:

结构域 描述

sol.x

行向量的选择的解算器的步骤。

sol.y

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

sol.solver

解算器的名字。

此外,如果你指定事件选择odeset和事件被检测到,那么索尔还包括这些字段:

结构域 描述

sol.xe

点事件发生时。sol.xe(结束)包含一个终端事件的确切点,如果有的话。

sol.ye

金宝搏官方网站对应于事件的解决方案sol.xe

sol.ie

指数为返回的向量函数中指定事件选择。事件解算器检测到的值表示。

算法

ode78是维尔纳的实现的“最有效的”龙格-库塔8(7)和一个7阶连续扩展。解决方法是先进的8阶结果。7阶连续扩展需要的四个额外的评估odefun,但只有在需要插值的步骤。

引用

[1]维尔纳,j . h”数值优化与Interpolants龙格-库塔双。”数值算法53岁的没有。2 - 3(2010年3月):383 - 396。https://doi.org/10.1007/s11075 - 009 - 9290 - 3

扩展功能

版本历史

介绍了R2021b