誰かが次の問題を手伝ってくれれば幸いです。次の ODE があります。
dr/dt = 4*exp(0.8*t) - 0.5*r ,r(0)=2, t[0,1] (1)
私は(1)を2つの異なる方法で解決しました。Runge-Kutta 法(4 次) とMatlabode45
を使用。両方の結果を次の式で得られる分析解と比較しました。
r(t) = 4/1.3 (exp(0.8*t) - exp(-0.5*t)) + 2*exp(-0.5*t)
正確な解に対して各メソッドの絶対誤差をプロットすると、次のようになります。
RK メソッドの場合、私のコードは次のとおりです。
h=1/50;
x = 0:h:1;
y = zeros(1,length(x));
y(1) = 2;
F_xy = @(t,r) 4.*exp(0.8*t) - 0.5*r;
for i=1:(length(x)-1)
k_1 = F_xy(x(i),y(i));
k_2 = F_xy(x(i)+0.5*h,y(i)+0.5*h*k_1);
k_3 = F_xy((x(i)+0.5*h),(y(i)+0.5*h*k_2));
k_4 = F_xy((x(i)+h),(y(i)+k_3*h));
y(i+1) = y(i) + (1/6)*(k_1+2*k_2+2*k_3+k_4)*h; % main equation
end
そしてのためにode45
:
tspan = 0:1/50:1;
x0 = 2;
f = @(t,r) 4.*exp(0.8*t) - 0.5*r;
[tid, y_ode45] = ode45(f,tspan,x0);
私の質問は、なぜ使用すると振動するのode45
ですか? (私は絶対誤差を指しています)。どちらの解も正確 ( 1e-9
) ですがode45
、この場合はどうなるでしょうか?
RK 法の絶対誤差を計算すると、見栄えが良くなるのはなぜですか?