我使用 Runge-Kutta4 为 ODE 解决方案编写了这段代码:
function y=myODE(f,y0,x0,h,x_final)
x=x0;
y=y0;
while x<x_final
h=min(h,x_final-x);
k1=f(x,y);
k2=f(x+h/2,y+h*k1/2);
k3=f(x+h/2,y+h*k2/2);
k4=f(x+h,y+h*k3);
y=y+(h/6)*(k1+2*k2+2*k3+k4)
x=x+h;
end
f
是函数y' = f(x,y),y0
是初始值,x0
是函数开始的地方,h
子区间,x_final
是函数停止的地方。
我尝试了我的代码,它为我正确地解决了 ODE,但我也想在 xy 轴上绘制我的函数到子间隔x0
的x_final
区间h
。当我尝试使用它来绘制它时,plot(x0:h:x_final,y)
我只得到一个空图。我知道(猜测)我必须将我的绑定y
到几个x
才能进行绘图,但是我怎样才能在不过多更改代码的情况下做到这一点?
如何绘制y
given y0
、 interval x0
tox_final
和 given的图表h
?
MATLAB新手,感谢我能得到的所有帮助!
编辑:明确我的代码的用途;
我需要这个 ODE 求解器来解决和绘图。我应该通过查看y
on的h
值来研究截断误差,并通过查看不同2*h
的图表来研究 Runge-Kutta4 的稳定性。 y
h