本主题显示如何限制ode的解决方案是非负的。施加非承诺并不总是微不足道的,但有时由于对方程的物理解释或由于解决方案的性质,有时是必要的。在必要时,您应该只对解决方案强加这一限制,例如在没有它的情况下集成失败的情况下,或者解决方案将不可应用的地方。
如果解的某些成分必须是非负的,那么使用odeset
设置非负
选择这些组成部分的指数。此选项不适用于ode23s
,ode15i
,或用于隐式求解器(ode15s
,ode23t
,ode23tb
)应用于质量矩阵问题。特别地,你不能在DAE问题上施加非负约束,因为它必须有一个奇异质量矩阵。
考虑初值问题
在区间上求解
在初始条件下
.ODE的解衰减到0。如果求解器产生一个负的解值,那么它就开始通过这个值跟踪ODE的解,当计算的解发散到时,计算最终失败
.使用非负
选项可防止此集成失败。
比较的解析解
使用颂歌的解决方案ODE45.
没有其他选择,只有一个非负
选项集。
Ode = @(t,y) -abs(y);%标准溶液,含|ode45|options1 = odeset (“完善”1);[t0,y0] = ode45(ode,[0 40],1, option1);%非负约束解options2 = odeset (options1,非负的1);[t1,y1] = ode45(ode,[0 40],1,options2);%解析解t = linspace (0, 1000);y = exp (- t);
将三种解决方案绘制出来进行比较金宝搏官方网站。强加非负性是防止解决方案偏离方向的关键 .
绘图(t,y,'b-',t0,y0,“罗”,t1,y1,“k *’);传奇(精确解的,“没有限制”,“Nonnegativity”,...'地点',“西南”)
另一个需要非负解的问题的例子是膝盖问题在示例文件中编码kneeode
.等式是
在区间上求解 在初始条件下 .的参数 一般是用来满足的 ,这个问题用 .这个ODE的解决方案是 为 和 为 .然而,计算带有默认公差的数值解表明,该解遵循 整个积分区间的等斜线。施加非负性约束会得到正确的解。
解决膝关节问题,没有非承诺约束。
ε= 1 e-6;y0 = 1;Xspan = [0 2];Odefcn = @(x,y,) ((1-x)*y - y²)/;不加限制地解决(x1, y1) = ode15s (@ (x, y) odefcn (x, y,ε)xspan, y0);%强制一个非负性约束选项= odeset(非负的1);[x2,y2] = ode15s(@(x,y) odefcn(x,y,), xspan, y0, options);
画出解决方案进行比金宝搏官方网站较。
情节(x1, y1,“罗”x2, y2," b *’)轴([0、2、1,1])标题(““膝盖问题””)传说(“没有限制”,“Non-negativity”)Xlabel(“x”)ylabel(“y”)
[1]洗发丁,L.F.,S. Thompson,J.A.Kierzenka,和G.D.Byrne,“ODES的非负面解决方案”金宝搏官方网站应用数学与计算卷。170,2005,pp。556-569。