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

Exercice 1 import numpy as np Elle fournit un résultat visuellement un peu meilleur que la méthode d'Euler classique, mais s'éloigne elle aussi de la



Previous PDF Next PDF





[PDF] Informatique en CPGE (2015-2016) Corrigé TP 10 : résolution

Exercice 1 Objectif : programmer la méthode d'Euler pour résoudre l'équation différentielle y/ = y sur l'inter- valle [0; 4] avec y(0) = 1 1 def euler(a,b,y0,h,f): x=a y= 



[PDF] Chapitre N 5 : La méthode dEuler pour les systèmes différentiels

Exercice No 3 : Dans l'interpréteur, écrivez les lignes de commandes suivantes : import numpy; X=numpy array([1,2,3]); type(X);



[PDF] 1 Méthode dEuler - Site Personnel de Arnaud de Saint Julien

TP : Résolution d'équations différentielles : méthode d'Euler Exercice 2 Écrire une fonction euler calculant les valeurs approchées d'une solution d' Déterminer une fonction F : R2 → R2 telle que X (t) = F(X(t),t) Programmer là en Python



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

Exercice 1 import numpy as np Elle fournit un résultat visuellement un peu meilleur que la méthode d'Euler classique, mais s'éloigne elle aussi de la



[PDF] Devoir surveillé n 2 du janvier 2015 - PanaMaths

La suite de l'exercice consiste à appliquer la méthode d'Euler implicite sur un Écrire un programme en python mettant en œuvre la formule trouvée à la 



[PDF] Corrigé du TP no 9 - Alain TROESCH

Exercice 1 Tout d'abord, importons les import numpy as np import scipy integrate as itg Commençons par définir la méthode d'Euler : def euler(f, a, y0, b, n):



[PDF] Informatique en PCSI et MPSI Champollion 2013-2014 Méthodes d

19 fév 2014 · méthode d'Euler en Python Runge Kutta d'ordre 4 (RK4) Méthode de Runge- Kutta d'ordre 4 en odeint (suite) Exercice: L'équation de



[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] TP dinformatique PCSI - Mathématiques PC - Free

TP 20 : Méthode d'Euler 119 TP 21 : Calcul Exercice 1 (PYTHON comme une calculatrice) : Taper les commandes suivantes dans une console (ouvrir une 



[PDF] Équations différentielles 10 - Programmation Python pour les

Exercice 3 2 : Opérations sur les tableaux Exercice 10 1 : Méthodes d'Euler Python est un langage généraliste de programmation interprété qui a la 

[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

[PDF] fonction ode45 matlab

[PDF] le message andrée chedid fnac

[PDF] grille évaluation projet

[PDF] comment bien faire l amour ? son mari pdf

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) per.append(periode(t, x[:, 0])) plt.plot(mus, per) plt.title("Valeurde la p ériodeen fonction de mu ") plt.grid()

plt.show()0.00.51.01.52.02.53.03.54.06.06.57.07.58.08.59.09.510.010.5Valeur de la période en fonction de muEnfin, l"excitation de cet oscillateur par un terme harmonique permet d"observer que l"amplitude de l"onde est indépen-

dante de la force extérieure appliquée, avec néanmoins un comportement chaotique.mu = 8.53

A = 1.2

omega = .1 defg(X, t): x, dx = X return[dx, mu*(1x*x)*dxx + A*np.sin(2*np.pi*omega*t)] plt.figure(5, figsize=(12,4)) t = np.linspace(0, 200, 500)

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

plt.plot(t, X[:, 0]) plt.title("Oscillationsforc ées") plt.grid() plt.show()http://info-llg.fr/page 7

0501001502003

2 1

0123Oscillations forcées

page 8quotesdbs_dbs27.pdfusesText_33