在MATLAB中解决ODE的功能是可以在任何地方评估其数值

时间:2015-06-01 19:54:06

标签: matlab solver ode

例如,如果我有以下ODE: Y '' + y = 0的

在Matlab中我可以假设y(1)= y和y(2)= y',然后

DY(1)= Y(2)

DY(2)= - Y(1)

现在,如果我有y''+ f(x)* y = 0形式的ODE,其中f(x)是一个函数,我可以在任何地方评估它的数值,但你没有分析形式并不能使f(x)适合某种函数。我的问题是,如果我想将f(x)的值放在ODE中,如何在MATLAB中数值求解这个ODE,例如,

当x <0.5且

时,

f(x)= 0.1 当x> = 0.5时,

f(x)= 1.0

这个ODE可能不切实际,但它可以让我了解我所面临的问题。请不要分段解决。那可行吗?或者我必须自己编写ODE求解器?

提前感谢您的投入。

2 个答案:

答案 0 :(得分:0)

您可以应用相同的技巧。调用y→y(1)和y&#39; →y(2)。然后

d / dx y(1)= y(2)

d / dx y(2)= - f(x)* y(1)

实施功能

function dy = myodefun(x, y)
dy = zeros(2, 1);
dy(1) = y(2);
dy(2) = - f(x) * y(1);

或明确为您的示例

function dy = myodefun(x, y)
dy = zeros(2, 1);
dy(1) = y(2);
dy(2) = - (0.1 + (x >= 0.5) * 0.9) * y(1);

并将其提供给标准求解器,例如ode45

答案 1 :(得分:0)

我自己找到了这个问题的解决方案:

http://www.mathworks.com/help/matlab/ref/ode45.html?searchHighlight=interpolate

必须使用插值。但似乎是一种可行的方式。

欢迎任何其他方法。