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