[PDF] [PDF] Résolution numérique dune équation différentielle

return x et fournissent des résultats peu discernables de la solution exacte Enfin, la méthode d'Euler implicite est définie par : from scipy optimize import newton



Previous PDF Next PDF





[PDF] Chapitre N 3 : Les méthodes dEuler et ses cousines

Indication : Pour demander à Python une (approximation d'une) solution de l' équation implicite y = yk + hf(tk+1,y), on pourra exécuter l'instruction fsolve( lambda 



[PDF] Résolution numérique dune équation différentielle

return x et fournissent des résultats peu discernables de la solution exacte Enfin, la méthode d'Euler implicite est définie par : from scipy optimize import newton



[PDF] Méthodes numériques – Euler et Runge-Kutta - Physagreg

Figure 5 – Mise en oeuvre de la méthode d'Euler explicite avec Python : graphique Figure 10 – Résultat graphique de la méthode d'Euler implicite dans le cas 



[PDF] Résolution numériques des équations différentielles - II

Mettre l'équation 2 sous la forme g(x) = 0 et rappeler l'algorithme de Newton 2 Programmer le schéma d'Euler implicite Pour ce faire vous devrez rajouter trois 



[PDF] Résolution numérique des Équations Différentielles Ordinaires

Donc, la méthode d'Euler explicite est encodé par l'approximation de Padé R01, Euler implicite par R10 et la méthode du point milieu par R11 Théorème 7 4 2 Il  



[PDF] Python et les math (n 4) - Free

Avec Python (bis) – Schéma d'Euler implicite (en utilisant solve) – observation numérique de la propriété des valeurs moyennes 6 VAN DER 



[PDF] TP - Méthodes numériques - Corrigé

Comparer la méthode d'Euler explicite et la méthode d'Euler implicite sur le pro- blème raide y (t) = −500(y(t) − cos(t)) On commence par définir la fonction f(t, 



[PDF] TP no 2 : Méthodes dEuler - Site de ptsi-pt-aix

2) Méthode d'Euler semi-implicite à pas constant encore la puissance du langage Python, en fournissant à l'utilisateur un environnement de traitement de  



[PDF] Analyse numérique avec Python - Normale Sup

22 mai 2014 · Ce n'est pas gênant, il faut simplement éviter d'appliquer la méthode d'Euler à n' importe quoi, et surtout sur n'importe quel intervalle Exemple 3 : 



[PDF] Enoncés des exercices

Ecrire un programme python qui calcule u(4) par les méthodes d'Euler explicite, d'Euler implicite et de Runge-Kutta d'ordre quatre Comparer les résultats obtenus 

[PDF] gervaise portrait physique social et moral

[PDF] methode euler equation differentielle

[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

Corrigéinformatique commune

Résolution numérique d"une

équation différentielleExercice 1.On commence par importer les différents modules et fonctions dont nous auront besoin :importnumpy as np

importmatplotlib.pyplot as plt

fromscipy.integrateimportodeintLa fonctionodeintnous permet d"obtenir une résolution numérique de référence pour l"équation différentielle qui nous

intéresse :deff(x, t): returnnp.sin(t)*np.sin(x) t = np.linspace(0, 50, 256) x = odeint(f, 1, t) plt.plot(t, x) plt.title( solution de x "=sin(t)sin(x)") plt.show()010203040501.01.21.41.61.82.02.22.42.62.8solution de x'=sin(t)sin(x) La méthode d"Eulerse définit ainsi :defeuler(f, x0, t): n =len(t) x = [x0] forkinrange (0, n1): h = t[k+1]t[k] p1 = f(x[k], t[k]) x.append(x[k] + h*p1)

returnxmais le résultat est assez décevant, la solution fournie par la méthode s"éloigne irrémédiablement de la vraie solution :

http://info-llg.fr/page 1 x1 = euler(f, 1, t) plt.plot(t, x,"", label="Solutionexacte ") plt.plot(t, x1, label= M thode d "Euler") plt.title( M thode d "Euler") plt.legend(loc="upperleft ") plt.show()010203040501.01.52.02.53.03.5Méthode d'Euler

Solution exacte

Méthode d'EulerEn revanche, les méthodes deHeunet RK4s"avèrent bien plus précises :defheun(f, x0, t):

n =len(t) x = [x0] forkinrange (0, n1): h = t[k+1]t[k] p1 = f(x[k], t[k]) p2 = f(x[k] + h*p1, t[k+1]) x.append(x[k] + h*(p1 + p2) / 2) returnxdefrk4(f, x0, t): n =len(t) x = [x0] forkinrange (0, n1): h = t[k+1]t[k] p1 = f(x[k], t[k]) p2 = f(x[k] + h*p1 / 2, t[k] + h / 2) p3 = f(x[k] + h*p2 / 2, t[k] + h / 2) p4 = f(x[k] + h*p3, t[k+1]) x.append(x[k] + h*(p1+2*p2+2*p3+p4) / 6) returnxet fournissent des résultats peu discernables de la solution exacte. Enfin, la méthode d"Eulerimplicite est définie par :fromscipy.optimizeimportnewton defeulerbis(f, x0, t): n =len(t) x = [x0] forkinrange (0, n1): h = t[k+1]t[k] s = newton(lambdau: ux[k]f(u, t[k+1])*h, x[k]) x.append(s)

returnxElle fournit un résultat visuellement un peu meilleur que la méthode d"Eulerclassique, mais s"éloigne elle aussi de la

solution exacte : page 2 x4 = eulerbis(f, 1, t) plt.plot(t, x,"", label="Solutionexacte ") plt.plot(t, x4, label= M thode d "Euler") plt.title( M thode d "Eulerimplicite ") plt.legend(loc="best") plt.show()010203040500.51.01.52.02.53.0Méthode d'Euler implicite

Solution exacte

Méthode d'EulerExercice 2.On définit l"erreur de la méthode ainsi :deferreur(methode, n): t = np.linspace(0, 2, n) deff(x, t):returnx x = methode(f, 1, t) m = 0 forkinrange (n): m =max(m,abs(x[k]np.exp(t[k])))

returnmLa recherche du rang minimal pour une précision donnée peut être réalisée par une méthode dichotomique, à condition

de posséder une valeurn0qui réalise cette précision (valeur qu"on peut obtenir en tâtonnant). On définit donc la fonction :defrang(methode, epsilon, n0):

iferreur(methode, n0) > epsilon: returnNone a, b = 2, n0 whileba > 1: c = (a + b) // 2 iferreur(methode, c) > epsilon: a = c else: b = c returnbCette fonction fournit les résultats suivants : >>>rang(euler, 1e1, 200) 147
>>>rang(euler, 1e2, 2000) 1477
>>>rang(euler, 1e3, 20000)

14777>>>rang(heun, 1e2, 100)

32
>>>rang(heun, 1e4, 1000) 315
>>>rang(heun, 1e6, 10000)

3140>>>rang(rk4, 1e4, 100)

13 >>>rang(rk4, 1e8, 200) 120
>>>rang(rk4, 1e12, 1500)

1187http://info-llg.fr/page 3

Exercice 3.On obtient la solution numérique de ce système à l"aide du script :defF(X, t): [x, y] = X return[np.cos(t)*xnp.sin(t)*y, np.sin(t)*x + np.cos(t)*y] t = np.linspace(0, 4, 256)

X = odeint(F, [1, 0], t)

x, y = X[:, 0], X[:, 1] plt.plot(t, x, label="x") plt.plot(t, y, label="y") plt.legend(loc="best") plt.title("Solutionexacte ") plt.grid() plt.show()0.00.51.01.52.02.53.03.54.01.0 0.5

0.00.51.01.52.02.53.0Solution exacte

x y La méthode d"Eulervectorielle peut se définir ainsi :defeuler_vect(F, X0, t): n =len(t)

X = [X0]

forkinrange (0, n1): h = t[k+1]t[k] p1 = F(X[k], t[k])

X.append([X[k][0] + h*p1[0], X[k][1] + h*p1[1]])

returnXet le graphe obtenu est très proche du graphe exact :

X1 = euler_vect(F, [1, 0], t)

x1 = [z[0]forzinX1] y1 = [z[1]forzinX1] plt.plot(t, x1, label="x") plt.plot(t, y1, label="y") plt.legend(loc="best") plt.title( M thode d "Eulervectorielle ") plt.grid() plt.show()page 4

0.00.51.01.52.02.53.03.54.01.0

0.5

0.00.51.01.52.02.53.0Méthode d'Euler vectorielle

x

yOn peut noter une légère différence entre les deux scripts pour définirxety; cette différence est due au fait que dans le

premier script, X est un tableaunumpyqui permet une indexation plus aisée des tableaux bi-dimensionnels.

Exercice 4.

É quationde V ander P ol

Commençons par définir la fonction qui caractérise l"équation différentielle :deff(X, t):

x, dx = X return[dx, mu*(1x*x)*dxx]On obtient ensuite les deux graphes demandés à l"aide du script : t = np.linspace(0, 30, 512) mu = 1 forvin[.001, .01, .1, 1]:

X = odeint(f, [0, v], t)

plt.figure(1) plt.plot(t, X[:, 0]) plt.figure(2) plt.plot(X[:, 0], X[:, 1]) plt.figure(1) plt.title("Équationde Van der Pol ") plt.grid() plt.figure(2) plt.title("Diagrammedes phases ") plt.grid() plt.show()http://info-llg.fr/page 5

0510152025303

2 1

0123Équation de Van der Pol3

2 1 01233
2 1

0123Diagramme des phasesOn observent que les solutions convergent vers un régime périodique indépendant (à un déphasage près) des conditions

initiales.

Nous allons maintenant constater qu"en jouant sur le paramètre, il est possible d"obtenir des solutions sensiblement non

sinusoïdales :plt.figure(3, figsize=(12,6)) t = np.linspace(0, 50, 512) formuin[1, 5, 10]:

X = odeint(f, [2, 0], t)

plt.plot(t, X[:, 0], label="mu= {} ".format(mu)) plt.title("Dépendancedu param ètremu ") plt.legend(loc="lowerleft ") plt.show()010203040503 2 1

0123Dépendance du paramètre mu

mu = 1 mu = 5

mu = 10On peut observer que le phénomène de relaxation est d"autant plus marqué queaugmente.

Par ailleurs, il apparaît que la période dépend du paramètre. Pour calculer celle-ci, on calcule la moyenne des écarts

entre deux maximums consécutifs à l"aide de la fonction : page 6 defperiode(t, x): s = [] forkinrange (1,len(t)1): ifx[k1] < x[k]andx[k+1] < x[k]: s.append(t[k]) p = 0 forkinrange (1,len(s)): p += s[k]s[k1]

returnp / (len(s)1)En faisant varierentre 0 et 4 on obtient le graphe des périodes suivant :plt.figure(4)

mus = np.linspace(0, 4, 200) per = [] formuinmus: x = odeint(f, [2, 0], t)quotesdbs_dbs27.pdfusesText_33