29
E. Hanert, E. Deleersnijder et V. Legat MEMA/MECA/FSA – ASTR/PHYS/SC Modèle de Stommel dans l’Atlantique Nord S. Legrand E. Deleersnijder et V. Legat MEMA/MECA/FSA – ASTR/PHYS/SC A quoi servent les méthodes numériques ?

A quoi servent les méthodes numériquesfreeit.free.fr/...%20M%E9thodes%20de%20Runge-Kutta%20et%20cie.pdf · Runge-Kutta n quelconque Ordre de précision arbitrairement élevé, Facile

Embed Size (px)

Citation preview

E. Hanert, E. Deleersnijder et V. Legat MEMA/MECA/FSA – ASTR/PHYS/SC

Modèle de Stommel dans l’Atlantique Nord

S. Legrand E. Deleersnijder et V. Legat MEMA/MECA/FSA – ASTR/PHYS/SC

A quoi servent les méthodes numériques ?

Problème de Cauchy

Questions théoriquesExistence, unicité et régularité d'une solutionStabilité d'une équation différentielle

Méthodes numériques Stabilité d'une méthodePrécision d'une méthode Approximation numérique

Valeur exacte

Applications :très nombreuses dans tous les domaines

u'(x) = u(x)

J = 1 instable

u'(x) = -u(x)

J = -1 stable

u'(x) = f(x)

J = 0 écart constant

Bilan

u'(x) = -10(x-1)u(x)

J > 0 si x<1 instableJ < 0 si x>1 stable

Méthodes de Taylor d'ordre n

Euler explicite (Taylor n=1)Ordre de précision linéaireMise en œuvre facileStabilité ?

Taylor n quelconque Ordre de précision arbitrairement élevé, Mise en œuvre fastidieuse si n élevéStabilité ?

Exemple

u'(x) = u(x)

J = 1 instable

u'(x) = -u(x)

J = -1 stable

u'(x) = f(x)

J = 0 écart constant

Bilan

u'(x) = -10(x-1)u(x)

J > 0 si x<1 instableJ < 0 si x>1 stable

Solution numérique

Euler explicite ou Taylor d’ordre un

Exercice conseillé :

Ecrire la formule de récurence pour une méthode de Taylor d’ordre quatre !La programmer sous Matlab !Calculer l’erreur entre solution analytique et numérique !Comparer prédictions théoriques et observations de l’expérience numérique !

Estimation de l’erreur

IdéeReste du développement de Taylor

Erreurs locale et globale

Stabilité de la méthode d ’Euler

Cas général dans le plan complexe

Taylor n quelconque Ordre de précision arbitrairement élevé, Mise en œuvre fastidieuse si n élevéConditionnellement stables

Nombre complexe

Problème modèle correspondant à la linéarisation en un point

Comment améliorer la stabilité ?Euler implicite et explicite

IdéeIl existe d'autres manières d'estimer la hauteur du rectangle !

La douce illusion de l'inconditionnellement stable...

IdéeOn estime la hauteur du rectangle par f(Xi+1,Ui+1)

Exemple : u'(x) = sin(u(x))

Euler impliciteOrdre de précision linéaireEquation à résoudre à chaque pas de temps

(équation non-linéaire, si f non-linéaire !)Inconditionnellement stable

Difficile, difficile, très difficile

Méthodes explicitesde Runge-Kutta

Heun (Runge-Kutta n=2) "le classique" (Runge-Kutta n=4)

Euler explicite (Runge-Kutta n=1)

Runge-Kutta n quelconque Ordre de précision arbitrairement élevé, Facile à mettre en oeuvreConditionnellement stables (comme Taylor)

Méthode de HeunComment choisir les 4 paramètres ?

Il faut la précision requise…

Identification des termes3 relations à satisfaire4 paramètres à choisir

Il existe plusiseurs possibilités !

Prédiction

Correction

Runge-Kutta d’ordre 4

Runge-Kutta-Fehlberg

Calcul simultané et efficace de deux approximations de la valeur

Pi+1 une approximation d’ordre 4Ui+1 une approximation d’ordre 5

La différence permet d’obtenir une estimation de l’erreur locale commise

Comment choisir un nouveau pas hi+1 ?

Estimation de l’erreur que l´on commettraau pas suivant : elle doit satisfaire le critère

Estimation de l’erreurlocale que l’on vient de commettreau pas précédent hi

ToléranceErreur acceptable

Relationsheuristiques

On construit une stratégie adaptative basée sur des arguments heuristiques peu rigoureux...

Stratégie prudente ou intrépideselon votre caractère

Stratégie adaptative

Idée 2 des méthodes prédicteurs-correcteurs

Obtenir une estimation de Ui+1pour les formules des méthodes implicites

Méthodes d'Adams

Adams-Bashfort-Moulton n quelconque Ordre de précision arbitrairement élevé, Prédicteur explicite à pas liés,Correcteur (semi-)implicite à pas liés,Conditionnellement stables

Idée 1 des méthodes prédicteurs-correcteurs

Obtenir une estimation de l’erreur locale commise

On utilise n+1 valeurs précédentes :Méthodes à pas liés

Idée des méthodes à pas liés

On souhaite exploiter la connaissance des valeurs passées.

Interpolation

Extrapolation

Explicite

Implicite

Pratiquement...

Méthodes de Gear

Gear n quelconque Ordre de précision arbitrairement élevé, Implicites à pas liésTrès stables (ok pour problèmes raides)

Exemple

Méthode de Gear d ’ordre 2

Systèmes d’équations différentielles

Notation compacte :les vecteurs sont en gras.

C’est exactement la même histoire !

Méthode d'Euler explicite

Tableau à deux indicesOn calcule la j-ème composante du vecteur des inconnues à la i-ème abscisse temporelle

VecteurOn calcule la j-ème composante du vecteur des inconnues.

Notation compacte :les vecteurs sont en gras.

Stabilité des systèmes

Le problème différentiel initial est équivalent à n équations scalaires

Implémentation dans QuadLab

package quadlab;

public abstract class OdeIntegrator {private int size;public OdeIntegrator(int size);abstract double [] f(double [] x, double [] fx);public void setSolution(int i, double a);public void solve (double h, int n, int nsub);

double [] k1 = new double[size];double [] k2 = new double[size];double [] k3 = new double[size];double [] k4 = new double[size];

Blas.set(x,xprev); Blas.set(estimate,0,x);fx[0] = 1.0;

for(int i=1; i<=n; i++) {Blas.set(k1,f(x,fx),h); Blas.set(xprev,x,k1,0.5); Blas.set(k2,f(xprev,fx),h); Blas.set(xprev,x,k2,0.5); Blas.set(k3,f(xprev,fx),h);Blas.set(xprev,x,k3,1);Blas.set(k4,f(xprev,fx),h);

Blas.add(x,k1,1.0/6.0);Blas.add(x,k2,1.0/3.0);Blas.add(x,k3,1.0/3.0);Blas.add(x,k4,1.0/6.0); }