[PDF] déquation différentielle RESOLUTION APPROCHEE DUNE EQUATION



Previous PDF Next PDF







Résolutionnumériqued’équationsdifférentielles

0 0 0 5 1 0 1 5 2 0 2 5 1 2 3 4 5 6 7 8 Méthode d'Euler pour y'=y n=5 n=10 n=100 Solution exacte Figure 1–Approximationdeexpparlaméthoded’Euler • pour la



Méthode d’Euler pour la chute avec frottement

Méthode d’Euler pour la chute avec frottement L’équation différentielle modélisant la chute verticale d’un solide dans un fluide est la suivante : dv =A - B vn dt Par définition : t v(t t) v(t) lim dt dv t 0 donc lorsque t est petit on a l’expression approchée : ( ) ( ) v t t v t A Bv t ( )n t



Equation différentielle et méthode dEULER

B) EQUATION DIFFERENTIELLE ET METHODE d'EULER - Etablir l'équation différentielle du mouvement - Montrer que : Si f = k V Si f = K V2 dV / dt = A – B V avec A = g (1- fluide V/m) et B = k / m dV / dt = A – C V2 avec A = g (1- fluide V/m) et C = K / m V lim = A / B = m A / k V lim



CHAPITRE 11 : RÉSOLUTION DÉQUATIONS DIFFÉRENTIELLES PAR LA

On voit clairement apparaître dans la procédure une limite de la méthode d’Euler En effet plus on va calculer de points à partir du temps initial plus on va s’éloigner de la solution 2 Programmation en Python def euler (derivee, y0, pas, nombre_iterations): liste_approx = [y0] compteur = 0 while compteur < nombre_iterations :



Runge–Kutta methods for ordinary differential equations

The simple Euler method: yn = yn 1 +hf(yn 1); h = xn xn 1 can be made more accurate by using either the mid-point or the trapezoidal rule quadrature formula: yn = yn 1 +hf yn 1 + 1 2hf(yn 1): yn = yn 1 + 1 2hf(yn 1)+ 1 2hf yn 1 +hf(yn 1): Runge–Kutta methods for ordinary differential equations – p 3/48



déquation différentielle RESOLUTION APPROCHEE DUNE EQUATION

Equation vectorielle et méthode d'Euler En fait la méthode d'Euler s'applique également aux équations du type Y' = F(Y, t) avec Y fonction d'un intervalle de vers n avec nP2 On peut ainsi ramener une équation différentielle d'ordre 2, 3 en une équation différentielle de degré 1 On procède à la vectorisation de l'équation



Résolution numérique d’une équation différentielle

0 0 0 5 1 0 1 5 2 0 2 5 3 0 3 5 4 0 1 0 0 5 0 0 0 5 1 0 1 5 2 0 2 5 3 0 Méthode d'Euler vectorielle x y On peut noter une légère différence entre les deux scripts pour définir x et y; cette différence est due au fait que dans le



Méthode de résolution des équations différentielles ODE

II 1 Méthodes d'Euler explicite et implicite 09 II 2 Méthode d'Euler amélioré 15 II 3 Méthode d'Euler-Cauchy 15 II 4 Méthode de Crank – Nicholson 18 II 5 Méthode de Heun 19



Physically Based Modeling: Principles and Practice

Euler’s method simply computes x t0 C h/ by taking a step in the derivative direction, x t0 C h/ D x0 C hxP t0/: You can use the mental picture of a 2D vector field to visualize Euler’s method Instead of the real integral curve, p follows a polygonal path, each leg of which is determined by evaluating the vector f at the beginning, and



Differential Equations

Chapter 0 A short mathematical review A basic understanding of calculus is required to undertake a study of differential equations This zero chapter presents a short review

[PDF] la déchéance de gervaise dans l'assommoir

[PDF] calcul intégrale python

[PDF] python intégration numérique

[PDF] exercice python euler

[PDF] le médecin malgré lui acte 2 scène 4

[PDF] méthode dichotomie python

[PDF] le message andrée chedid résumé détaillé

[PDF] résolution équation différentielle matlab ode45

[PDF] le message andrée chedid genre

[PDF] algorithme méthode d'euler implicite matlab

[PDF] méthode de tir équation différentielle

[PDF] le message andrée chedid quiz

[PDF] le message andrée chedid extrait

[PDF] méthode euler implicite matlab

[PDF] le message andrée chedid texte intégral

INFORMATIQUE MPSI Mise à jour : 24/04/2015

§11 : Résolution numérique

d'équation différentielle 1 / 6

RESOLUTION APPROCHEE D'UNE

EQUATION DIFFERENTIELLE

De nombreux phénomènes physiques se modélisent à l'aide d'équations différentielles pour lesquelles

on ne dispose pas de méthode analytique pour obtenir l'expression des solutions exactes. On souhaite alors

obtenir une solution "approchée" du problème pour en déduire un comportement qualitatif. Pour cela, on utilise des méthodes de résolution approchée

I) Méthode d'Euler

Principe de la méthode d'Euler

On veut trouver une solution "approchée" de la solution d'un problème de Cauchy écrit sous la forme : y' = F(y,t) et y(t0) = y0. On veut évaluer de proche en proche une valeur approchée de y(t) en t0, t1 = t0 + h, t2 = t0 +

2h, tk = t0 + kh... où h3+* est appelé pas de la méthode.

Comme dans la "vraie" solution, la tangente au point de coordonnées (t, y(t)) est de pente

F(y(t),t), la méthode d'Euler consiste à écrire que la tangente au point (tk , yk) est de pente F(yk, tk).

On doit alors étudier la suite de premier terme y0 et définie par la relation de récurrence : k², yk+1 = yk + h F (yk , tk) On relie alors les points (tk, yk) et (tk+1, yk+1) pour obtenir une courbe "approchée" de la courbe de la vraie solution. En principe, plus le pas est petit plus on est proche de la solution exacte mais alors pour avoir la valeur en un point il faut calculer plus de valeurs et on a alors un risque de cumuler des erreurs d'arrondi. Exemple 1 Avec l'équation : y' = y avec la condition initiale y(0) = y0 = 1 et les pas

1., 0.1 et 0.03, on obtient les courbes suivantes

de la vraie solution (ici exp) lorsque t croit, mais que l'écart est de plus en plus petit avec h INFORMATIQUE MPSI Mise à jour : 24/04/2015

§11 : Résolution numérique

d'équation différentielle 2 / 6 Exemple 2 Avec l'équation : y' + y = e t cos(10t) , la condition initiale y0 = 0 et les pas respectifs h = 0.2, h = 0.1, h = 0.05 et h = 0.01, on obtient les courbes suivantes Rem : La méthode d'Euler est dite d'ordre 1 car l'erreur commise en b par la méthode d'Euler en partant de a avec un pas h, est en O(h1). D'autres méthodes existent, comme par exemple celles de Runge-Kutta qui généralisent la méthode d'Euler et qui sont d'ordre 1, 2 ou 4 (erreur en O(h1), O(h2), O(h4)) : c'est la méthode RK4.

Algorithme de la méthode d'Euler

Données : F, a, b, y0, h

t ĸa y ĸy0

Liste_t = [t]

Liste_y = [y]

tant que t + h <= b faire y ĸy + h * F(y, t)

Liste_y ĸ Liste_y + [y]

t ĸt + h

Liste_t ĸ Liste_t + [t]

Résultat : Liste_t , Liste_y

Programme Python

def euler (F, a, b, y0, h) : y = y0 t = a

Liste_t = [a]

Liste_y = [y0]

while t + h <= b : y = y + h*F(y,t) ou, uniquement si y est scalaire : y += h*F(y,t) Liste_y.append(y) ou : Liste_y = Liste_y + [y] (plus lent) t = t + h ou : t += h

Liste_t.append(t)

return ( Liste_t , Liste_y) INFORMATIQUE MPSI Mise à jour : 24/04/2015

§11 : Résolution numérique

d'équation différentielle 3 / 6

Terminaison, correction et complexité

Si on part bien de F continue, a < b et h > 0 (et supérieure à la précision machine), il suffit, en notant x

la partie entière de x, de (b - a) / h itérations pour obtenir la condition du test " t + h > b " vérifiée : la

terminaison de l'algorithme est assurée. Pour ce qui est de la correction, la convergence de la suite vers la solution exacte dépend de la

fonction F. Un théorème d'analyse numérique affirme que si F est de classe C1 et "uniformément

lipschitzienne selon la seconde variable", alors la méthode est d'ordre 1 et donc lorsque le pas tend vers 0,

la différence entre la vrai solution et la solution approchée tend vers 0.

Pour ce qui est de la complexité, on voit que, si n = (b - a) / h , on effectue n calcul de F(t,y), 2n

additions, n multiplications et 2n concaténations de listes. De plus, pour ce qui est de la complexité en

mémoire, on a 2 variables numériques (t et y) mais également 2 variables de type list qui contiennent

négligea

A titre d'exemple voici quelques résultats de test de la méthode d'Euler pour différents pas (ainsi

que différentes versions du programme Python). On travaille avec l'équation différentielle y' = y et y(0) = 1

et on teste l'erreur en t = 3. (on connait la valeur de la solution exacte en 3. puisqu'il s'agit de exp(3))

pas 100 10-1 10-2 10-3 10-4 10-5 10-6 10-7 Erreur 12.08 4.22 0.29 3.10-2 5.10-3 5.10-4 5.10-5 3.10-6 version

Liste_y = Liste_y + [y]

1.8 10-5

sec

5.8 10-5

sec

1.5 10-3

sec

4.1 10-2

sec

5.14 sec non calculé

(> 200 sec) non calculé non calculé version

Liste_y += [y]

1.6 10-5

sec

3.8 10-5

sec

5.7 10-4

sec

3.1 10-3

sec

2.5 10-2

sec

2.5 10-1

sec

2.49 sec 25.5 sec

version

Liste_y.append(y)

2.1 10-5

sec

1.3 10-4

sec

5.8 10-4

sec

3.3 10-3

sec

2.3 10-2

sec

2.2 10-1

sec

2.23 sec 21.8 sec

version sans calcul de Liste_t

2.4 10-5

sec

3.4 10-5

sec

3.8 10-4

sec

2.6 10-3

sec

1.8 10-2

sec

1.8 10-1

sec

1.72 sec 16.3 sec

On constate que la différence entre la solution exacte et la solution approchée est de l'ordre de

grandeur de h (majorée environ par 50 h) et que la durée d'exécution est proportionnelle au nombre d'itérations

effectuées à l'exception notable de la version "Liste_y = Liste_y + [y] " dans laquelle la concaténation d'une liste

de plus de 1000 termes et d'une liste d'un terme prend un temps important. Autre exemple avec l'équation différentielle : y' = y2 et la condition initiale y(1) = 1

On a tracé dans le graphe suivant, les solutions approchées pour les pas h = 10-n pour n entre 1 et 5

INFORMATIQUE MPSI Mise à jour : 24/04/2015

§11 : Résolution numérique

d'équation différentielle 4 / 6

II) Equations scalaires d'ordre supérieur

Equation vectorielle et méthode d'Euler

En fait la méthode d'Euler s'applique également aux équations du type Y' = F(Y, t) avec Y

fonction d'un intervalle de 3 vers 3n avec nP2. On peut ainsi ramener une équation différentielle

d'ordre 2, 3.. en une équation différentielle de degré 1. On procède à la vectorisation de l'équation.

Par exemple, supposons que l'on veuille résoudre le probléme de Cauchy (PC) suivant : (PC) y(3) + 2 y" 6 y' + y2 = exp(t) et y(0) = a0 , y'(0) = b0 et y"(0) = c0.

On pose Z la fonction de 3 vers 33 définie par : Z(t) = (y"(t), y'(t), y(t)). Alors, le problème

de Cauchy devient : Z ' = F(t, Z) avec la condition initiale Z(0) = (a0, b0, c0) où F est la fonction de

34 vers 33 définie par F(, , , t) = ( exp(t) 2 + 6 2 , , )

Attention cependant : lorsqu'à la première itération, on effectue y = y + h*F(y,t) on veut

une addition de vecteurs et non une concaténation. Si y et h*F(y,t) sont deux listes, y + h * F(y,t)

est pourtant une concaténation. Il faut utiliser le type array de la bibliothèque numpy

Programme Python

def Eulervectoriel (F, a, b, y0, h) : y = y0 t = a

Liste_t = [a]

Liste_y = [y0]

while t + h <= b : y = y + h*F(y,t) Liste_y.append(y) ou : Liste_y = Liste_y + [y] (plus lent) t = t + h ou : t += h

Liste_t.append(t)

return ( Liste_t , Liste_y)

Exemple d'utilisation 1

import numpy as np import matplotlib.pyplot as plt style = ['r:', 'b--', 'm-.']

F = lambda y,t: np.array([-y[1], y[0]])

plt.ion() y0 = np.array([1,0]) for n in range(1,6): h = (10**(-n))/0.41 res = Eulervectoriel(F, 0, 10, y0, h) abscisses = res[0] ordonnees = [res[1][k][1] for k in range( len( res[1] ) ) ] plt.plot(abscisses, ordonnees, style[n%3]) plt.draw() plt.ioff() plt.show() INFORMATIQUE MPSI Mise à jour : 24/04/2015

§11 : Résolution numérique

d'équation différentielle 5 / 6

Exemple d'utilisation 2

import numpy as np import matplotlib.pyplot as plt style = ['r:', 'b--', 'm-.']

F = lambda y,t: np.array([-y[1], y[0]])

plt.ion() y0 = np.array([1,0]) sousgraphe = [251, 252, 253, 254, 255] for n in range(1,6): plt.subplot( sousgraphe[n-1]) h = (5**(-n))/0.41 res = Eulervectoriel(F, 0, 10, y0, h) abscisses = res[0] ordonnees = [res[1][k][1] for k in range( len( res[1] ) ) ] plt.plot(abscisses, ordonnees, style[n%3]) plt.draw() plt.subplot(212) for n in range(1,6): h = (5**(-n))/2.21 res = Eulervectoriel(F, 0, 10, y0, h) abscisses = res[0] ordonnees = [res[1][k][1] for k in range( len ( res[1] ) ) ] plt.plot(abscisses, ordonnees, style[n%3]) plt.draw() plt.ioff() plt.show()

III) Utilisation de scipy

Les procédures précédentes ont évidemment été implémentées et améliorées dans les bibliothèques

logicielles scientifiques Scipy. De plus la méthode d'Euler a elle-même été améliorée en une méthode de

Runge-Kutta : par exemple la méthode RK4 .

Une méthode numérique d'intégration des équations différentielles est implémentée dans la fonction

scipy.optimize.odeint

Cette fonction odeint s'utilise, pour résoudre l'équation y'(t) = F(y(t), t), sous la forme odeint(F, y0, t) où

>>> from scipy.integrate import odeint >>> odeint(lambda y,t : y , 1, [0, 0.5, 1.]) array([[ 1. ], [ 1.64872127], [ 2.71828191]])quotesdbs_dbs12.pdfusesText_18