K
est une grande matrice clairsemée et y
est un vecteur. A un pas de temps particulier dt
de t1
à t1+dt
:ODE45: Donner des résultats différents de `expm` dans la matrice clairsemée
Method1: Les expm
conduit à:
K = ...
y = ...
y = expm(-1i*dt*K)*y; %new y
Method2:
Le ode45
donne:
K = ...
y = ...
y0 = y;
[T, Y] = ode45(@(t,y)dy(y,K),[t1 t1+dt],y0);
y = Y(end,:).'; %new y
où:
function ydot = dy(y,K)
ydot = -1i*K*y;
Les deux méthodes donnent des résultats différents pour les grandes matrices éparses. Quel est le bon?
Avez-vous essayé de réduire la tolérance aux erreurs ou la taille de pas d'intégration de ode45? – AVK
@AVK non je n'ai pas. Connaissez-vous la raison derrière? – kyle
Eventuellement ode45 perd de la précision. Essayez de jouer avec les options d'intégration 'AbsTol',' RelTol' et 'MaxStep' – AVK