1
K
は大きな疎行列であり、y
はベクトルです。ODE45:疎な行列で `expm`と異なる結果を返します
方法1:: expm
はにつながる:
K = ...
y = ...
y = expm(-1i*dt*K)*y; %new y
方法2:
ode45
ができます:
K = ...
y = ...
y0 = y;
[T, Y] = ode45(@(t,y)dy(y,K),[t1 t1+dt],y0);
y = Y(end,:).'; %new y
:
t1
から
t1+dt
に特定のタイムステップ
dt
で
function ydot = dy(y,K)
ydot = -1i*K*y;
この2つの方法は、大きなスパース行列に対して異なる結果をもたらします。正しいのはどれですか?
ode45の誤差許容度または積分ステップサイズを減らそうとしましたか? – AVK
@AVKいいえ、私はしませんでした。あなたはその理由を知っていますか? – kyle
おそらくode45は精度を失います。 'AbsTol'、' RelTol'と 'MaxStep'統合オプションを試してみてください – AVK