次のコードを使用していますが、何が問題なのかわかりません。
xx = 0:1/50:1;
v = 3.*exp(-xx)-0.4*xx;
xq = xx;
vq = @(xq) interp1(xx,v,xq);
tspan = 0:1/50:1;
x0 = 3;
[~, y2] = ode45(@(t,x)vq(x), tspan, x0);
わかりましたy2 = [3;NAN;NAN;NAN,.....]
。それでも、 を呼び出す前に両方の方程式をプロットするとode45
、それらが等しいことがわかりますが、これは驚くべきことではありません。
私が計算するとき:
f = @(t,r) 3.*exp(-r)-0.4*r;
[~, y] = ode45(f,tspan,x0);
それは正常に動作します。しかし、補間しても同じ結果が得られることを示す必要があります。なぜそれが機能しないのですか?