主要内容

非负ODE解

本主题演示如何将ODE的解约束为非负的。强加非负性并不总是微不足道的,但有时由于方程的物理解释或由于解的性质,它是必要的。您应该只在必要时对解决方案施加此约束,例如在没有它的情况下集成失败,或者解决方案不适用的情况下。

如果溶液的某些组分必须是非负的,则使用odeset设置非负选项的索引。此选项不能用于ode23sode15i,或用于隐式求解器(ode15sode23tode23tb)应用于质量矩阵问题。特别地,你不能对DAE问题施加非负约束,因为它必须有一个奇异质量矩阵。

示例:绝对值函数

考虑初值问题

y - | y |

在区间上求解 0 4 0 在初始条件下 y 0 1 .这个ODE的解衰减为零。如果求解器产生一个负的解值,那么它开始通过这个值跟踪ODE的解,计算最终失败,因为计算的解发散到 - .使用非负选项可防止此集成失败。

比较的解析解 y t e - t 到ODE使用的一个解决方案数值没有额外的选择,和一个有非负选项设置。

Ode = @(t,y) -abs(y);标准溶液|ode45|option1 = odeset(“完善”1);[t0,y0] = ode45(ode,[0 40],1, option1);具有非负约束的解option2 = odeset(option1,非负的1);[t1,y1] = ode45(ode,[0 40],1,options2);解析解T = linspace(0,40,1000);Y = exp(-t);

画出三个解进行比较。万博 尤文图斯施加非负性是防止解决方案偏离的关键 -

情节(t y“b -”t0, y0,“罗”t1, y1,“k *’);传奇(精确解的“没有限制”“Nonnegativity”...“位置”“西南”

图中包含一个axes对象。坐标轴对象包含3个line类型的对象。这些对象代表精确解,无约束,非负性。

例子:膝盖问题

另一个需要非负解的例子是膝盖问题编码在示例文件中kneeode.方程是

ϵ y 1 - x y - y 2

在区间上求解 0 2 在初始条件下 y 0 1 .的参数 ϵ 一般是拿来满足的 0 < ϵ 1 ,这个问题用 ϵ 1 × 1 0 - 6 .这个ODE的解接近于 y 1 - x x < 1 而且 y 0 x > 1 .然而,计算默认公差的数值解表明,解遵循 y 1 - x 等斜线对整个积分区间。施加非负性约束可以得到正确的解。

在有无非负性约束条件下解决膝盖问题。

= 1e-6;Y0 = 1;Xspan = [0 2];Odefcn = @(x,y,) ((1-x)*y - y^2)/;不加约束地解决问题(x1, y1) = ode15s (@ (x, y) odefcn (x, y,ε)xspan, y0);施加一个非负性约束选项= odeset(非负的1);[x2,y2] = ode15s(@(x,y) odefcn(x,y,epsilon), xspan, y0, options);

画出解以作比较。万博 尤文图斯

情节(x1, y1,“罗”x2, y2," b *’轴([0,2,-1,1])“膝盖问题”)传说(“没有限制”“Non-negativity”)包含(“x”) ylabel (“y”

图中包含一个axes对象。标题为“knee problem”的axis对象包含两个类型为line的对象。这些对象代表无约束,非负性。

参考文献

[1]香皮恩,L.F, S.汤普森,J.A. Kierzenka和G.D. Byrne,“ode的非负解,”万博 尤文图斯应用数学与计算2005年第170卷第556-569页。

另请参阅

相关的话题