Bonjour à tous
je me permets de vous écrire concernant la gestion du pas de temps
En fait je dois résoudre un système non linéaire sur matlab
j'applique la méthode de Newton Raphson:
En fait j'applique la méthode de cette façon:
mon code me sort des valeur de U egales à "NaN" ou 'inf"Code:Tmax=0.1; dt=0.01; TPS=floor(Tmax/dt); tol=10^(-8); U_old % condition initiale % Methode de Newton for j=1:TPS U=U_old; nbiter=0; err=1; while (err>tol)&(nbiter<100) F=M*(U-U_old)/dt + A*U; % C'est mon F(U)=0; Jacobien_F= M/dt+ A+ H; % c'est le Jacobien avec H=derivée_A *U W=-Jacobien_F\F; nbiter=nbiter+1; U=U+W; err=norm( M*(U-U_old)/dt + A*U ,inf ); end % while U_old=U; end % for TPS
J'aimerai savoir à quel moment dans mon programme je gère mes "NaN" et donc divisier le dt/2
Lorsque vous avez divisé le dt/2, à la fin vous avez multiplié par 2? vous avez aussi stocké le temps t=t+dt?
si quelqu'un connait comment faire pour gérer ce problème de "NaN" merci de m'aider ( des gens me disent qu'il faut jouer sur le pas de temps dt
si ça marche tu arrete sinon tu divise le pas dt par 2 et ainsi de suite)
Cordialement
-----