Ode 45能解决分段函数的迭代?
11视图(30天)
显示旧的评论
数值迭代过程中,随时间变化的变量值。之间的关系变量值对应于不同的微分方程组。是否有可能继续选择相应的微分方程组的迭代计算根据变量值的关系。
例如:
初始值是(x0, y0)。在第一次,x0 > y0,所以数值选择系统(1)微分方程的迭代计算。那么变量x和y值随时间变化。当x < = y,系统(2)的微分方程选择继续迭代计算。等等。
代码:
t0 = 0;
tf = 10;
x10 = 8;
x20的= 5;
x0 = (x10, x20);
(t, x1) =数值(@fun t0: tf, x0);
x2 = (t, x1);
情节(x1 (: 1), x1 (:, 2));
函数f =乐趣(t, x)
f = 0 (2, 1);
f (1) = - (x (1) - x (2)) / x (1);%系统(1),x (1) > (2)
f (2) = (x (1) - x (2)) / x (1) + 1;%系统(1),x (1) > (2)
% f (1) = (x - x (1) (2)) / x (2);%系统(2),(1)< = x (2)
1 - (x % f (2) = (2) - x (1)) / x (2);%系统(2),(1)< = x (2)
结束
初始值是x0 = [x10, x20的]=[8 5],其中x10 > x20的,所以数值选择系统(1)微分方程的迭代计算。当t = 3 s, x (1) = 7.6491, (2) = 8.3509 x, x (1) < = x (2)。然后我希望系统的微分方程(2)选择继续迭代计算通过使用[7.6491,8.3509]作为新的初始值。
谢谢你!
答案(1)
Bjorn Gustavsson
2021年9月13日
最好的方法是使用
事件
处理程序能够打断并重新启动x和y ode-integration每当经过。请参阅帮助和文档
odeset
看看代码
ballode
例如如何处理事件。
在你的情况下,你可以进行直接的与集成提供所有f, f₂, g_1里面,g_2和他们所有的衍生品在某种程度上匹配,但是我甚至都不确定。
HTH