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 が正しく解決されましたが、サブインターバルx0
を使用して、間隔の xy 軸上に関数をプロットしたいと考えています。を使用してプロットしようとすると、空のグラフしか表示されません。プロットするために複数にバインドする必要があることを(推測して)理解していますが、コードをあまり変更せずにそれを行うにはどうすればよいですか?x_final
h
plot(x0:h:x_final,y)
y
x
y
given y0
、 interval x0
to x_final
、 givenのグラフをプロットするにはどうすればよいh
ですか?
MATLAB は初めてなので、できる限りのサポートをお願いします!
編集:私のコードの目的を明確にするため。
ソリューションとグラフ作成の両方に、この ODE ソルバーが必要です。y
onの値を とh
比較して切り捨て誤差を研究し、 のグラフを異なるで比較し2*h
て Runge-Kutta4 の安定性を研究することになっています。 y
h