7
TP 301 SCHÉMA D’EULER PROGRESSIF Le compte rendu s’effectue avant le mercredi 4 mars 2015 à 23h sur moodle. Vos fonctions doivent être testées, documentées et commentées. Les questions sont facultatives. DÉRIVATION NUMÉRIQUE DORDRE 1 Soit f une fonction de R dans R supposée de classe C 1 . Si x 0 ¸ R est un réel donné, nous pouvons écrire f ¤ (x 0 ) = lim h0 f (x 0 + h)- f (x 0 ) h . Une idée pour calculer numériquement la première dérivée f ¤ de f au point x 0 consiste donc à se donner une valeur h positive assez petite (le pas) et à calculer ˚ h f (x 0 ) h après avoir défini la quantité ˚ h f (x 0 ) f (x 0 + h)- f (x 0 ). Lorsque h> 0 est donné, l’objet mathématique ˚ h est un opérateur ; à toute fonction conti- nue f : R R donnée, il fait correspondre une autre fonction continue ˚ h f définie par ˚ h f (x)= f (x + h)- f (x). Cet opérateur est appelé opérateur de différence première progres- sive. Cet opérateur est linéaire. 301.1 ÉQUATIONS DIFFÉRENTIELLES DU PREMIER ORDRE Les codes python relatifs à cette section seront sauvegardés dans un fichier nommé partie1.py §1 Généralités Dans cette partie, nous notons f : t 0 , + × R R (t, x) f (t, x) . une fonction donnée de deux variables t et x. Dans les applications, x est souvent une variable physique alors que t est une variable temporelle, que nous appellerons temps. Nous voulons résoudre le problème de Cauchy suivant : étant donnée une valeur u 0 ¸ R (u 0 est dite valeur initiale), trouver une fonction de classe C 1 , u : t ¸[t 0 , +[u(tR qui satisfait . u(t)= f (t, u(t)) u(t 0 )= u 0 , (1) où nous avons noté . u(t)= du dt (t). Exemple 1 On se donne f (t, x)=3x-3t, t 0 =0 et u 0 = (un nombre quelconque). Le problème de Cauchy devient . u(t)=3u(t)-3t u(0) = ; (2) sa solution est donnée par u(t)=( - 1_3) e 3t + t + 1_3. 1

Euler

Embed Size (px)

DESCRIPTION

tp d'info sur la methode d'Euler

Citation preview

Page 1: Euler

TP 301

SCHÉMA D’EULER PROGRESSIF

Le compte rendu s’effectue avant le mercredi 4 mars 2015 à 23h sur moodle.Vos fonctions doivent être testées, documentées et commentées.Les questions sont facultatives.

DÉRIVATION NUMÉRIQUE D’ORDRE 1

Soit f une fonction de ℝ dans ℝ supposée de classe C 1. Si x0 ∈ ℝ est un réel donné, nouspouvons écrire

f ′(x0) = limℎ→0

f (x0 + ℎ) − f (x0)ℎ

.

Une idée pour calculer numériquement la première dérivée f ′ de f au point x0 consiste donc àse donner une valeur ℎ positive assez petite (le pas) et à calculer∆ℎf (x0)

ℎaprès avoir défini la quantité ∆ℎf (x0) ≝ f (x0 + ℎ) − f (x0).

Lorsque ℎ > 0 est donné, l’objet mathématique ∆ℎ est un opérateur ; à toute fonction conti-nue f ∶ ℝ → ℝ donnée, il fait correspondre une autre fonction continue ∆ℎf définie par∆ℎf (x) = f (x+ℎ)−f (x). Cet opérateur est appelé opérateur de différence première progres-sive. Cet opérateur est linéaire.

301.1 ÉQUATIONS DIFFÉRENTIELLES DU PREMIER ORDRE

Les codes python relatifs à cette section seront sauvegardés dans un fichier nommé partie1.py

§1 GénéralitésDans cette partie, nous notons

f ∶[

t0,+∞[

×ℝ → ℝ(t, x) ↦ f (t, x)

.

une fonction donnée de deux variables t et x. Dans les applications, x est souvent une variablephysique alors que t est une variable temporelle, que nous appellerons temps.

Nous voulons résoudre le problème de Cauchy suivant : étant donnée une valeur u0 ∈ ℝ (u0est dite valeur initiale), trouver une fonction de classe C 1, u ∶ t ∈ [t0,+∞[→ u(t) ∈ ℝ quisatisfait .u(t) = f (t, u(t))

u(t0) = u0,(1)

où nous avons noté .u(t) = dudt

(t).Exemple 1 On se donne f (t, x) = 3x−3t, t0 = 0 et u0 = � (un nombre quelconque). Le problèmede Cauchy devient .u(t) = 3u(t) − 3t

u(0) = �;(2)

sa solution est donnée par u(t) = (� − 1∕3) e3t + t + 1∕3.

1

Page 2: Euler

2 Schéma d’Euler progressif

§2 Schémas d’EulerPour établir un schéma d’approximation du problème (1), nous commençons par partitionner

l’axe (Ot), c’est-à-dire nous choisissons des points t0, t1, t2,… tels quet0 < t1 < t2 <⋯ < tn < tn+1 <…

En posant ℎn = tn+1 − tn, nous pouvons approcher.u(tn) par u(tn+1) − u(tn)

ℎn.

Si un est une approximation de u(tn), ces deux approches nous suggèrent les schémas suivants, ditschéma d’Euler progressif

un+1 − unℎn

= f(

tn, un) , n = 0, 1, 2,…

u0 = u0.(3)

Le schéma d’Euler progressif est un schéma explicite car il permet d’expliciter un+1 en fonctionde un :

un+1 = un + ℎnf(

tn, un) .

Exercice 1 Écrire une fonction subdiv_reg dont le prototype est1 subdiv_reg(a, b, n)

où a et b sont deux flottants tels que a < b, et n est un entier non nul. Cette fonction retourne laliste constituée des n + 1 éléments t0 < t1 < ⋯ < tn d’une subdivision régulière du segment[a, b].Exercice 2

1. Écrire une fonction euler_progressif conduisant à la résolution approchée du problèmede Cauchy .u(t) = f (t, u(t))

u(t0) = u0,(4)

Les arguments de cette fonction étant• une fonction f de deux variables,• une liste subdiv de flottants dont les éléments sont triés par ordre strictement croissant

(c’est la liste des tn).• u_zero est un flottant représentant la valeur initiale au temps t0, le premier élément

de la liste subdiv.Cette fonction retourne la liste des approximations successives obtenues par la méthoded’Euler avec la subdivision subdiv (c’est la liste des un).

2. On considère le problème de Cauchy sur l’intervalle [0, 1]..u(t) = (1 + 2t)

u(t), et u(0) = 1.

Afficher sur un même graphique les courbes de• la solution analytique t↦ 1

4

(

t2 + t + 2)2

• la solution approchée avec la Méthode d’Euler avec une subdivision avec un pasconstant de 0.2.

• la solution approchée avec la Méthode d’Euler avec une subdivision avec un pasconstant de 0.1.

Page 3: Euler

301.1. Équations différentielles du premier ordre 3

§3 Étude d’un circuit RC passe-basOn considère le circuit représenté sur la figure 301.1. On cherche la réponse du filtre RC à

un signal d’entrée e(t) créneau de période T = 1 ms (donc de fréquence f = 1 kHz) et variantentre 0 et 1 V soit :

∀t ∈ [0, T [, e(t) =

{

E si t ∈ [0, T ∕2[0 si t ∈ [T ∕2, T [

avec E = 1 V.

FIGURE 301.1 – Exemple de filtre RC en circuit ouvert .

Exercice 3

1. Affecter à la variable globale1 T la valeur 1, T représentant la période T (toutes les duréesseront donc exprimées en ms).

2. Définir la fonction e qui, à toute date t (flottant), fait correspondre la valeur e(t). Pour cela,on utilise la définition récursive suivante

∀t ∈ ℝ, e(t) =⎧

0 si t < 0E si 0 ≤ t < T ∕2e(t − T ) si t ≥ T ∕2

Ne pas oublier de tester la fonction pour différentes dates !3. Définir la même fonction, nommée e2, en utilisant l’opérateur % (modulo).La loi des mailles dans le circuit 301.1 permet d’établir l’équation différentielle régissant

l’évolution de la tension s aux bornes du condensateur :

e(t) = Ri(t) + s(t) avec i(t) = Cdsdt

⟹ RCdsdt

+ s(t) = e(t) .

On identifie immédiatement une constante de temps � = RC caractéristique du circuit.L’équation différentielle à résoudre est alors de la forme

dsdt

= f (t, s, e, �) avec f (t, s, e, �) =e(t) − s(t)

�(5)

1Les variables globales, c’est mal. Mais en physique, c’est souvent bien pratique pour les constantes...

Page 4: Euler

4 Schéma d’Euler progressif

4. Écrire une fonction RC_euler qui prend comme arguments :⋆ une fonction f image de f ;⋆ une fonction entree d’une variable réelle représentant e(t) ;⋆ un flottant tau représentant la constante de temps ;⋆ une condition initiale s0 pour le signal de sortie ;⋆ une date initiale t0 ;⋆ une date finale t1 ;⋆ un nombre de pas n ;

et renvoyant le couple (t,s) où t est une liste de n+1 dates et s est la liste (de mêmedimension que t) représentant les valeurs correspondantes issues de la résolution numériquede l’équation (5) par la méthode d’Euler.

5. Pour différentes valeurs de �∕T , représenter sur un même grahique les signaux e(t) et s(t)pour t ∈ [20 T , 30 T ]. On choisira s(t = 0) = 0 et les valeurs suivantes :

�1 = 0, 1 ×T2�

; �2 =T2�

; �3 = 10 ×T2�

; �4 = 10 T

Bonus Observer les signaux dans l’intervalle [0, 10 T ]. Commenter.6. En étudiant le comportement asymptotique du condensateur, justifier que le filtre étudié soit

un filtre passe-bas. Interpréter alors les courbes précédentes.

301.2 SYSTÈMES DIFFÉRENTIELS

Les codes python relatifs à cette section seront sauvegardés dans un fichier nommé partie2.py

§4 Systèmes différentiels du premier ordreSoit f une fonction vectorielle supposée continue

#»f ∶ ℝ ×ℝ2 → ℝ2

(t, #»u ) ↦#»f (t, #»u )

Si #»u 0 ∈ ℝ2, on pose le problème de trouver une fonction à valeurs vectorielles#»u ∶ t ∈ ℝ → #»u (t) ∈ ℝ2

telle que.

#»u (t) = #»f (t, #»u (t))#»u (t0) =

#»u 0.

Cette équation est un système différentiel de 2 équations à 2 inconnues qui sont les composantesx(t), y(t) de #»u (t). La notation .

#»u (t) représente le vecteur dont les composantes sont .x(t), .y(t). Ennotant, f1, f2 les composantes de la fonction f , on obtient le problème de Cauchy

.x(t) = f1(t, x(t), y(t)).y(t) = f2(t, x(t), y(t))x(0) = x0 et y(0) = y0.

Page 5: Euler

301.2. Systèmes différentiels 5

Le schéma d’Euler progressif est généralisable à ce système différentiel, il devient#»u n+1 = #»u n + ℎn

#»f (tn,#»u n). (6)

c’est-à-direxn+1 = xn + ℎnf1(tn, xn, yn)

yn+1 = yn + ℎnf2(tn, xn, yn)

Exercice 4

1. Écrire une fonction euler2 de prototype euler2(f1, f2, subdiv, x_zero, y_zero)qui implémente le schéma d’Euler précédent avec la subdivision subdiv, et les conditionsinitiales x_zero, y_zero.Cette fonction retourne deux listes, correspondant aux approximations successives des fonc-tions x et y.

On s’intéresse au système d’équations de Lotka-Volterra. Celui-ci est classiquement utilisé pourdécrire l’évolution d’un couple proie-prédateur (ici x est l’effectif des proies, y celui des préda-teurs).

{

dxdt (t) = ax(t) − bx(t)y(t)dydt (t) = −cy(t) + dbx(t)y(t)

avec a = 1, b = 0.1, c = 1.5, d = 0.75.2. Résoudre numériquement le système de Lotka-Volterra sur l’intervalle de temps [0, 100]

en utilisant une subdivision régulière de 100000 pas. On prendra pour condition initiale 10proies, et 5 prédateurs.

3. Tracer sur un même graphique l’évolution du nombre de proies et de prédateurs en fonctiondu temps. Sauvegarder ce graphique.

4. Tracer l’évolution conjointe du nombre de proie et de prédateurs, c’est-à-dire le nombre deprédateurs « en fonction » du nombre de proies. Sauvegarder ce graphique.Commenter le résultat obtenu.

§5 Oscillateur harmonique amortiOn s’intéresse au mouvement d’une masse attachée à un ressort horizontal. La masse, posée

sur un support, est astreinte à se déplacer le long d’un axe (Ox) horizontal.On note l la longueur du ressort et l0 sa longueur à l’équilibre. On choisit comme origine de

l’axe (x = 0) la position de la masse quand le ressort est à l’équilibre.

Page 6: Euler

6 Schéma d’Euler progressif

Les différentes actions2 auxquelles la masse est soumise sont :⋆ son poids m #»g ;⋆ la force de rappel élastique # »Frappel = −k(l − l0) u⃗x = −kx u⃗x ;⋆ des forces de frottements de type fluide en # »Ff luide = −� #»v = −� .xu⃗x ;⋆ la réaction du support #»R = #»N + #»T où #»N et #»T correspondent respectivement aux compo-

santes normale et tangentielle. Lorsque la masse glisse, la composante tangentielle (frotte-ments solides) s’oppose à la vitesse de la masse et a pour valeur absolue |T | = f |N| où fest un facteur numérique (coefficient de frottement dynamique). Lorsque la vitesse de lamasse est nulle, on supposera que la composante tangentielle est nulle. On a donc

T =

0 si .x = 0−f |N| si .x > 0+f |N| si .x < 0

On donne :m = 0, 5 kg ; k = 500 N∕m ; g = 10 m∕s2

Le principe fondamental de la dynamique permet d’écrire :{

m ..x = −kx − � .x + T0 = N − mg

d’où la relationN = mg ainsi que l’équation du mouvement :

..x + 2�!0.x − T

m+ !2

0x = 0 avec

!0 =

km

(pulsation propre)

� =�

2√

km(facteur d’amortissement)

(7)

1. Définir la fonction T qui prend comme argument le paramètre vitesse et qui renvoie lavaleur de la force de frottement solide (les paramètres f , m et g seront pris comme desvariables globales).

2. Écrire l’équation différentielle (7) sous la forme d’un système d’équations différentiellesdu premier ordre de la forme

{ .X = f1(t, X, Y ).Y = f2(t, X, Y )

avec{

X = xY = .x

que valent les fonctions f1 et f2 ?3. Définir les fonctions f_1 et f_2 d’arguments trois flottants t, X et Y.4. Écrire une fonction oscillateur_euler qui prend comme arguments :

⋆ deux fonctions f et g ;2Ces actions sont toutes réductibles à des glisseurs et par conséquent totalement déterminées par leurs résultantes

(forces) et un point d’application.

Page 7: Euler

301.2. Systèmes différentiels 7

⋆ les conditions initiales X0, Y0 et t0 sous forme de flottants ;⋆ un flottant représentant une date t1 finale ;⋆ un entier n représentant un nombre de pas ;

et qui renvoie trois listes (temps : liste des dates ; X : liste des valeurs de position ; Y :liste des valeurs de vitesse) contenant chacune n+1 flottants et telles que X etY soient lessolutions numériques approchées par la méthode d’Euler du système différentiel défini parles fonctions f et g.

5. À la date t = 0, la masse est lâchée sans vitesse initiale depuis une position x0 = 20 cm.Pour chacun des jeux de paramètres (variables globales) suivants :⋆ � = 2 SI, f = 0 ;⋆ � = 0, f = 0.4.

représenter la position de la masse en fonction du temps ainsi que le portrait de phase (vi-tesse en fonction de la position). On restreindra l’étude à l’intervalle de temps [0, 100∕!0

].