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

La fonction odeint nous permet d'obtenir une résolution numérique de référence pour l'équation différentielle qui nous intéresse : def f(x, t): return np sin(t) 



Previous PDF Next PDF





[PDF] Résolution numérique déquations différentielles

6 mar 2018 · C'est une équation différentielle d'ordre 1, mais elle n'est pas linéaire Cela semble indiquer que la méthode d'Euler est une méthode d'ordre 1 On Il faut utiliser la fonction odeint de Python de la librairie scipy integrate 4 



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

22 mai 2014 · des équations différentielles), en ne cherchant surtout pas à comprendre les mathématiques Programme Python pour la méthode d'Euler :



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

La fonction odeint nous permet d'obtenir une résolution numérique de référence pour l'équation différentielle qui nous intéresse : def f(x, t): return np sin(t) 



[PDF] Informatique en CPGE (2018-2019) Résolution numérique d

26 mar 2019 · numérique d'équations différentielles: méthode d'Euler pas de solutions analytiques : par exemple, l'équation θ// = −k1 sinθ − k2θ/ Python" (NumPy) élaborée pour un calcul numérique optimisé S B Présentation en 



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

pour l'autre une équation différentielle du deuxième ordre, le pendule simple Figure 5 – Mise en oeuvre de la méthode d'Euler explicite avec Python : 



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

19 fév 2014 · Résolution des équation différentielles méthode d'Euler en Python Runge Kutta d'ordre 4 (RK4) Méthode de Runge-Kutta d'ordre 4 en 



[PDF] Analyse numérique en Python, Résolution numérique déquations

résoudre analytiquement l'équation différentielle, dont la solution est Uc(t) = E0 +(U0 L'implémentation de la méthode d'Euler explicite est des plus simple



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

La méthode d'Euler vue dans un chapitre ultérieur n'est valide que pour les équations On commence par remarquer qu'une équation différentielle d'ordre n peut toujours Définissez la fonction f sous python grâce à la syntaxe suivante



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

But : Approcher la solution d'une équation différentielle de la forme y = f(t, y) alors on obtient la méthode d'Euler explicite : les approximations sont Indication : Pour demander à Python une (approximation d'une) solution de l' équation 



[PDF] Équations différentielles dordre 1 / cours, exercices et corrections

ii) L'ordre d'une équation différentielle est celui de la dérivée la plus élevée apparaissant dans l'équation Programmation de la méthode d'Euler avec Python

[PDF] erreur de consistance différences finies

[PDF] résolution numérique des équations différentielles ordinaires exercices corrigés

[PDF] consommation marqueur social

[PDF] les differentes finalités d'une entreprise

[PDF] les finalités de l'entreprise management

[PDF] les finalités de l'entreprise cours

[PDF] les finalités de l'entreprise pdf

[PDF] les finalités de l'entreprise cours ofppt

[PDF] finalité d'une entreprise définition

[PDF] objectif entreprise 2016 complet

[PDF] classement des pays consommateur d'alcool en afrique 2017

[PDF] les pays qui consomment le plus d'alcool en afrique

[PDF] classement des pays consommateur d'alcool en afrique 2016

[PDF] top 10 des pays consommateur d'alcool en afrique

[PDF] le pays le plus grand consommateur de biere en afrique

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

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_dbs29.pdfusesText_35