1
K
是一個大型稀疏矩陣,y
是一個向量。在一個特定的時間步長dt
從t1
到t1+dt
:ODE45:在稀疏矩陣中給出與`expm`不同的結果
方法一: 的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
其中:
function ydot = dy(y,K)
ydot = -1i*K*y;
這兩種方法給出了大型稀疏矩陣的不同結果。哪一個是正確的?
您是否試圖降低ode45的容錯或集成步長? – AVK
@AVK不,我沒有。你知道背後的原因嗎? – kyle
可能ode45失去精確度。嘗試玩'AbsTol','RelTol'和'MaxStep'整合選項 – AVK