例如,如果我有以下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求解器?
提前感谢您的投入。
答案 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
必须使用插值。但似乎是一种可行的方式。
欢迎任何其他方法。