求解具有内部条件的二阶 ODE - Matlab

Solving an 2nd order ODE with internal conditions - Matlab

我要在 Matlab 中求解这个二阶 ODE:

(a + f(t))·(dx/dt)·(d²x/dt²)  +  g(t)  +  ((h(t) + i(t)·(d²x/dt² > b·(c-x)))·(dx/dt)  +  j(t))·(dx/dt)²  +  k(t)·(t > d)  = 0

哪里

并注意

的两个条件

所以,这个问题可以在 Matlab 中使用类似的结构来解决,例如:

[T,Y] = ode45(@(t,y) [y(2); 'the expression of the acceleration'], tspan, [x0 v0]);

哪里

一些可能有帮助的问题:

在此先感谢您!

既然你提到了

ode45 is the ODE solver, but another one could be used.

你关心的(在我看来)是访问历史记录,以便你可以评估 d^2x/dt^2 自己,引入新条件,你是否考虑过调查 dde23(延迟差异)?

根据文档,您自己指定滞后时间向量,并且可以选择将历史指定为“...如果此调用继续该集成,则集成的先前解决方案”https://www.mathworks.com/help/matlab/ref/dde23.html

希望这会有所帮助,因为至少您应该能够通过包装自己的函数来解决问题,returns 来自 dde23 解决方案的值并检查您应该引入新条件的点你自己,然后指定新函数,根据需要编译你的结果,从本质上将问题简化为更多步骤。