ode45などの関数を使用せずにルンゲクッタ法を自分で記述し2階微分方程式を解くプログラムを制作したいです。
d^2x/dt^2=-2*dx/dt-10x
という減衰振動の式を
x=x1
dx/dt=x2
とおいて刻み幅0.2でt=0~3の範囲での値を求めるプログラムです。
d^2x1/dt^2=-2x2-10x1
dx/dt=x2
という連立微分方程式にして
k(1,b)=-2*(x2(1,a)+kk(1,b));
kk(1,b+1)=kk(1,b+1)*k(1,b);
k(1,2)=2*k(1,2); k(1,3)=2*k(1,3);
x2(1,a+1)=x2(1,a)+(1/6)*sum(ksum);
k(1,b)=-2*x2(1,a)-10*(x1(1,a)+kk(1,b));
kk(1,b+1)=kk(1,b+1)*k(1,b);
k(1,2)=2*k(1,2); k(1,3)=2*k(1,3);
x1(1,a+1)=x1(1,a)+(1/6)*sum(ksum);
以上のプログラムをつくりましたがx2が速度のはずなのにずっと0で、x1も収束しません。
ちなみに完全解は
x=(1/3)*exp(-t(1,a))*(sin(3*t(1,a))+3*cos(3*t(1,a)))