MethodesNume TD
MethodesNume TD
Méthodes numériques
1
Exercice IV (Prise en main de Python)
(1) Tester les instructions suivantes et comprendre comment on manipule des polynômes :
import numpy as np
A=[ 1, 2, 3]
P1=np.poly1d(A, variable=’x’)
P2=np.poly1d(A, variable=’s’, r=True)
print(P1)
print(P2)
Tester les instructions P1 + P2 , P1 ∗ P2 , P 2/P 1 et P 1 ∗ ∗2 et essayer de comprendre les
opérations.
(2) Calculer (à l’aide de Python) le résultat suivant :
4x3 + 2 + (x − 2)(x + 4)(x3 + 6x + 1).
(3) Tester les fonctions suivantes et comprendre comment on utilise des fonctions :
def saisie_coef(nc):
coef=[]
for i in range(nc):
c=float( input(’coef de degre ’+str(nc-i-1)+’ = ’) )
[Link](c)
return coef
def saisie_polynome():
print(’Saisir un nouveau polynome par coef.’)
deg=int( input(’degre = ? ’) )
Nb_coef=deg+1
coef_P=saisie_coef( Nb_coef )
P=np.poly1d(coef_P)
return P
P=saisie_polynome()
print(P)
Créer le polynôme 4x3 + 6x2 + 1 en utilisant ces fonctions.
(4) On veut générer un polynôme P défini par le résultat de calcul
P (x) = (x − x1 )(x − x2 ) · · · (x − xn ) avec n et x1 , x2 , · · · , xn donnés.
Ecrire un programme similaire à la question (3) afin de réaliser cet objectif.
Tester votre programme avec des cas concrets.
(5) Enfin, on voudrait tracer une courbe sur un intervalle [a, b] donné d’un polynôme choisi.
Pour cet objectif, étudier le programme suivant
2
import [Link] as plt
import numpy as np
def tracer_courbe(a,b,P):
xmin=min(a,b)
xmax=max(a,b)
Y=[]
Interval=[Link](xmin, xmax, 0.01)
for x in Interval:
[Link]( P(x) )
[Link](Interval, Y, ’b’)
[Link](True)
[Link]()
Tester ce programme au cas où a = −5, b = 5 et P = x2 − 2x + 1.
(6) De façon similaire, tracer la courbe de la fonction sin(x2 + 3x) sur l’intervalle [0, 10].
(Indice : Définir d’abord la nouvelle fonction sin(x2 + 3x).)
3
Pôle Universitaire Léonard de Vinci
Méthodes numériques
Exercice III
−1 0 1 2
Etant donné quatre points : , , , , on cherche des polynômes des
−1 0 1 8
moindres carrés.
(1) Déterminer la parabole (i.e. un polynôme de degré 2) des moindres carrés.
(2) Déterminer le polynôme de degré 3 des moindres carrés.
(3) Calculer le polynôme d’intrepolation de ces 4 points. Comparer à la question (2) : que
l’on peut conclure?
4
Construire un modèle qui permet d’établir un lien linéaire entre les distances de lance par le
bras droit et par le bras gauche. Utiliser le modèle afin de répondre les questions suivantes.
(1) Un adolescent qui lance à 6.5m du bras droit peut espérer lancer à combien de mètres
avec le bras gauche ?
(2) Un adolescent lance le poids à 4.2m du bras gauche. Quelle sera sa performance avec
le bras droit ?
def Li(i,X):
x=np.poly1d([1, 0])
L=1
n=len(X)
for j in range(n):
if j != i:
L=L*(x-X[j])/(float(X[i]-X[j]))
return L
def Interpol_Lagrange(X,Y):
s=0
n=len(X)
for i in range(n):
s=s+Li(i,X)*Y[i]
return s
5
• Créer le programme principal qui
— initialise le nuage des points et les stocke dans les tableaux X et Y ;
— détermine le polynôme d’interpolation en appelant la fonction
Interpol Lagrange(X, Y );
— trace sur le même graphe les points saisis et la courbe du polynôme d’interpo-
lation dans un intervalle qui contient tous points saisis.
6
(4.B) Maintenant, on travaille avec des points de Tchebycheff {xi }i=1,··· ,N définis par
2i − 1
xi = 5 cos π , i = 1, · · · , N.
2N
(d) Re-faire la question (a) en prenant respectivement N = 3, N = 6 et N = 11 avec ce
choix de xi .
(e) Quelle amélioration est apportée par le choix des points de Tchebycheff ?
7
Pôle Universitaire Léonard de Vinci
Méthodes numériques
On suppose que l’utilisation d’un ordinateur produit une erreur e(x) dans l’évaluation de
f (x), i.e. on a
f (x) = f ∗ (x) + e(x),
où f ∗ (x) représente la valeur effectivement calculée en pratique.
Par conséquent, l’erreur totale due à l’utilisation de la formule centrée (1) (avec f ∗ au lieu
de f ) sera
f ∗ (x + h) − f ∗ (x − h) e(x + h) − e(x − h) h2 000
f 0 (x) − = − f (θ), où θ ∈ [a, b].
2h 2h 6
(1) En supposant que |e(x)| < ε, montrer que la valeur absolue de l’erreur totale commise
est bornée par
ε h2
+ M.
h 6
(2) On considère une fonction dont certaines valeurs sont données ci-dessous.
En vous servant de la formule (1), calculer deux approximations
de f 0 (0.9) en prenant d’abord h = 0.002 et ensuite h = 0.005.
Sachant que la valeur exacte de f 0 (0.9) = 0.62161, calculer les
erreurs commises et expliquer les résultats obtenus.
8
(3) On suppose que f (x) = sin(x) et que tous les chiffres des approximations de f (x)
du tableau sont significatifs. Déterminer analytiquement la valeur de h qui donne la
meilleure approximation de f 0 (0.9) en utilisant la formule (1). Tester-le numériquement.
(Indice : utiliser la question (1).)
Exercice III
On considère la formule aux différences
f (x + 2h) − 2f (x + h) + 2f (x − h) − f (x − 2h)
A(h) = ' f (3) (x),
2h3
une approximation de la dérivée troisième f (3) (x).
(1) On dispose des valeurs suivantes de la fonction f (x).
En vous servant de la formule aux différences
A(h), calculer deux approximations de f (3) (1).
Estimer numériquement l’ordre de précision
de cette formule aux différences sachant que
f (3) (1) = −1.103 435 06.
9
(2) Calculer la valeur approchée de f 0 (x) en utilisant le schéma centré à 3 points avec
respectivement
h = 10−i , i = 1, 2, · · · , N.
Tracer la courbe qui représente les valeurs approchées de f 0 (x) en fonction de i.
(Pourquoi pas en fonction de h ?)
Que peut-on observer, quand i = 1, 2, · · · , 6 ? quand i = 12, · · · , 20 ?
D’après votre observation numérique, l’approximation s’améliore quand la valeur de h
devient de plus en plus petit ? Pourquoi ?
10
Pôle Universitaire Léonard de Vinci
Méthodes numériques
11
(2) Déterminer une approximation de la distance parcourue entre les moments t = 0 et
t = 5.
Déterminer une estimation d’erreur de cette approximation en fonction de M .
(1) Evaluer numériquement cette intégrale par la méthode composite des trapèzes pour le
pas h = 13 (on note Iapproche le résultat obtenu).
Et donner une estimation d’erreur de cette approximation, i.e. déterminer M tel que
|I − Iapproche | ≤ M.
(2) Calculer la valeur exacte de I.
(3) Comparer vos résultats des questions (1) et (2) :
• L’erreur “réelle” est inférieure à M ?
• Pourquoi Iapproche obtenue à la question (1) est supérieure à I ?
• Est-ce vrai quelque soit h ?
• Proposer une autre fonction dont la valeur de l’intégrale évaluée par la méthode
des trapèzes est toujours supérieure à la valeur exacte de l’intégrale.
(4) Si on souhaite évaluer I avec la méthode composite de Simpson, quel pas faut-il choisir
pour avoir une erreur inférieure à 10−4 ?
(2) Tester votre fonction sur des exemples d’intégrales dont vous pouvez calculer la valeur.
(3) Pour les valeurs N = 21 , 22 , · · · , 210 , déterminer l’erreur (notée Erreur(N )) entre les
valeurs exactes de l’intégrale et celles d’approximation. Tracer Erreur(N ) en fonction
de N à double échelle logarithmique.
Que peut-on observer ? Quelle est votre conclusion au niveau de l’ordre de précision ?
(4) Faire la même chose qu’en (2) et (3) en utilisant la méthode composite de Simpson.
12
Pôle Universitaire Léonard de Vinci
Méthodes numériques
Exercice I
y 0 = −y + t + 1,
t ∈ [0, 1],
On considère le problème de Cauchy
y(0) = 1.
(4) Calculer la solution approchée à l’aide du schéma de Taylor d’ordre 2 avec le pas h = 13 .
(Question calculatoire à laisser aux élèves, ne pas traiter en cours.)
On suppose que l’on discrétise [a, b] avec des points équidistants, notés ti , et on note h le
pas entre deux points voisins. On voudrait alors approcher les valeurs y(ti ) de la solution.
13
(3)∗ On considère maintenant une équation différentielle non-linéaire :
0 2
y = et − ey + 2t, t ∈ [0, 1],
(B)
y(0) = 0.
Quelle est la difficulté rencontrée au cours de la mise en place du schéma ?
Expliquer comment la méthode de point fixe permet de surmonter cette difficulté.
La méthode de point fixe converge-t-elle dans notre cas? sous quelle condition?
Exercice III
On s’intéresse aux approximations de l’EDO (d’ordre 2) suivante
(
x00 (t) + 3x0 (t) + 2x(t) = t2 , t > 0,
(2)
x(0) = 1, x0 (0) = 0.
(1) Ecrire le système (2) comme un système du premier ordre et déterminer la méthode
d’Euler explicite pour calculer les approximations de x(tn+1 ) et x0 (tn+1 ) en fonction de
x(tn ) et x0 (tn ).
possède la même solution x(t) que (2) si x(0) = 1 et y(0) est bien choisi.
Préciser le bon choix de valeur de y(0).
(3) Appliquer la méthode d’Euler explicite à (3) et donner les formules pour calculer les
approximations de x(tn+1) et y(tn+1 ) en fonction des approximations de x(tn ) et y(tn ).
(5) Généralisation de la question (4). Montrer que les 2 formules obtenues en questions
(1) et (3) donnent toujours les mêmes approximations de x(tn ) (pour tout n possible),
si le même paramètre de discrétisation h est utilisé.
14
import numpy as np
15
(1) Déterminer la solution analytique du problème.
n o
En déduire la courbe paramétrée définie par x(t), y(t) t ∈ [0, 10] .
(4) On veut tester l’approximation par la méthode d’Euler pour différentes (petites) valeurs
h. Sachant qu’il faut approcher 2 fonctions inconnues (x(t) et (y(t)), l’implémentation
de la méthode d’Euler doit être adaptée comme suit :
import numpy as np
return y, t
Quelles modifications ont faites sur la fonction Euler de l’[Link] ? Pourquoi on modifie
de cette manière ?
Appliquer ces programmes adaptés avec différentes valeurs de h. On note xh (ti ), yh (ti )
les solutions approchées obtenues.
Tracer la courbe reliant les points xh (ti ), yh (ti ) (pour une valeur h fixée).
Que-ce que vous pouvez observer quand on choisit une valeur de h de plus en plus
petite ?
16
Pôle Universitaire Léonard de Vinci
Méthodes numériques
Montrer que, en approchant f (s, y(s)) par son polynôme d’interpolation correspondant
aux 3 points ti−1 , ti et ti+1 , on a la méthode d’Adams-Moulton à 2 pas comme suit :
(
y0 = α, y1 =h β ; i
h
yi+1 = yi + 12 5f (ti+1 , yi+1 ) + 8f (ti , yi ) − f (ti−1 , yi−1 ) ,
pour i = 1, 2, ..., N − 1, où on suppose que yi est la valeur approchée de y(ti ).
(2) Montrer que l’erreur de troncature de cette méthode est de l’ordre O(h3 ). (Ceci permet
de déduire que la méthode d’Adams-Moulton à 2 pas est une méthode d’ordre 3.)
17
(•) Pour l’implémenter, il y a deux difficultés dont nous allons discuter par la suite :
— sur le choix de la valeur de β, inconnue jusque là ;
— sur le schéma : il est implicite, car yi+1 se trouve des deux côtés du schéma.
(3) Du fait que le schéma d’Adams-Moulton à 2 pas est implicite, on peut lui associer
un autre schéma explicite afin de prédire la valeur de yi+1 avant de l’utiliser dans le
calcul de f (ti+1 , yi+1 ). Pour ceci, on choisit (pour le moment) le schéma de Heun et on
peut construire une méthode de prédiction-correction avec
— le schéma de Heun pour le prédicteur ;
— le schéma d’Adams-Moulton à 2 pas pour le correcteur.
Expliciter le schéma composé de prédicteur-correcteur ainsi construit, en initialisant
la valeur de β à l’aide du schéma R.K.4.
0
y = −y + t + 1, t ∈ [0, 5],
(4) On reprend le problème de Cauchy
y(0) = 1.
Appliquer le schéma développé en question (2) au problème ci-dessus avec h = 1.
(•) Remarque : On peut montrer que l’influence du prédicteur est nettement moindre que
celle du correcteur de point de vue de l’erreur de troncature locale si la fonction f (t, y)
est lipschitzienne en y. Ainsi, le correcteur étant d’ordre p, il convient de choisir un
prédicteur d’ordre p − 1 afin que l’ordre global de la méthode de prédiction-correction
soit égal à p.
Montrer que, en approchant f (s, y(s)) par son polynôme d’interpolation correspondant
aux 3 points ti , ti+1 et ti+2 , on a la méthode suivante :
(
y0 = α, y1 = hβ; i
h
yi+2 = yi + 3 f (ti+2 , yi+2 ) + 4f (ti+1 , yi+1 ) + f (ti , yi ) , i = 0, · · · , N − 2.
(2) Du fait que le schéma obtenu en (1) est implicite, on peut lui associer un autre
schéma explicite afin de prédire la valeur de yi+2 avant de l’utiliser dans le calcul
de f (ti+2 , yi+2 ). Pour ceci, on choisit le schéma d’Euler et on peut construire une
méthode de prédiction-correction :
18
— pour le prédicteur, on utilise le schéma d’Euler ;
— pour le correcteur, on utilise le schéma obtenu en (1).
Expliciter l’algorithme de prédiction-correction ainsi construit.
(3) Le schéma obtenu en (1) est une méthode d’ordre 4. A partir de cette information,
expliquer pourquoi le choix du schéma d’Euler pour le prédicteur en question (2) n’est
pas un bon choix. (Mais on continue à l’utiliser en question (4) afin de simplifier le
calcul.)
19
Pôle Universitaire Léonard de Vinci
Méthodes numériques
Exercice II
Montrer le théorème suivant
Exercice III
Soit f : [a, b] × R → R une fonction suffisamment régulière et uniformément Lipschitzienne
en y (seconde variable), c’est à dire
∃L > 0, ∀t ∈ [a, b], ∀y1 , y2 ∈ R, on a |f (t, y1 ) − f (t, y2 )| ≤ L|y1 − y2 |.
20
Soit le problème de Cauchy
y 0 (t) = f (t, y(t) ) (t ∈ [a, b])
.
y(a) = α
On pose h = (b − a)/N , où N ∈ N∗ , et ti = a + ih pour 0 ≤ i ≤ N . On travaille avec le
schéma implicite suivant pour approcher la solution y(t) :
h
yi+1 = yi + f (ti , yi ) + f (ti+1 , yi+1 ) .
2
(1) Montrer que le schéma est bien défini si h < 2/L.
(3) Montrer que, pour tout h < h0 < 2/L assez petit, on a
hL ch3
y(ti+1 ) − yi+1 ≤ 1 + y(ti ) − yi + ,
1 − hL/2 1 − hL/2
où c une constante positive.
Exercice IV
y 0 = f (t, y),
t ∈ [a, b].
On considère le problème de Cauchy On discrétise [a, b] avec
y(a) = α.
N + 1 points équidistants, notés ti , et on note h le pas entre deux points voisins. Le schéma
d’Adams-Bashforth à 2 pas (noté AB2 ) est donné comme suit
(
y0 = α, y1 = h β; i
yi+1 = yi + h 32 f (ti , yi ) − 12 f (ti−1 , yi−1 ) , 1 ≤ i ≤ N − 1.
De façon similaire pour la stabilité (théorique) des schémas à 1 pas, on peut définir la stabilité
théorique du schéma AB2 comme suit :
Définition 1 (Stabilité théorique ( du schéma AB2 )
z0 = α̃, z1 =h β̃ ;
On considère son problème perturbé i
zi+1 = zi + h 32 f (ti , zi ) − 12 f (ti−1 , zi−1 ) + εi , 1 ≤ i ≤ N − 1.
On dit que le schéma AB2 est théoriquement stable ssi il existe deux constantes M1 et
M2 (indépendantes de h) telles que
(Remarque : en fonction de référence, cette définition peut être donnée en différentes formes,
qui restent équivalentes entre elles.)
Montrer que le schéma AB2 est théoriquement stable si f est uniformément Lipschitzienne
en y.
21
Exercice V
y 0 = f (t, y),
t ∈ [a, b].
On considère le problème de Cauchy On discrétise [a, b] avec
y(a) = α.
N + 1 points équidistants, notés ti , et on note h le pas entre deux points voisins. Le schéma
d’Adams-Moulton à 2 pas (noté AM2 , vu en TD précédent) est donné comme suit :
(
y0 = α, y1 =h β ; i
h
yi+1 = yi + 12
5f (ti+1 , yi+1 ) + 8f (ti , yi ) − f (ti−1 , yi−1 ) ,
(2) Montrer que le schéma AM2 est théoriquement stable si f est uniformément Lipschitzi-
enne en y.
22
Pôle Universitaire Léonard de Vinci
Méthodes numériques
(4) On passe au cas général où h = N1+1 , avec N un paramètre saisi par l’utilisateur. Re-
faire les questions (1) et (2) en précisant la matrice A et le vecteur F (qui dépendent
de N ).
(5) Une implémentation en Python de la question (4) est donnée ci-dessous. Analyser
cette implémentation et compléter ce qu’il faut afin de
import numpy as np
import [Link] as plt
23
u1 = -2
# construire la matrice A
A = [[0 for _ in range(N)] for _ in range(N)]
for i in range(N) :
A[i][i]=-2/(h*h)-16
if (i<N-1) :
A[i+1][i]=1/(h*h)
A[i][i+1]=1/(h*h)
## print("Vérification : A=", A)
# construire le vecteur F
F = [0 for _ in range(N)]
for i in range(N) :
if(i == 0) :
F[i]= -u0/(h*h)-32
elif(i == N-1) :
F[i]= -u1/(h*h)-32
else :
F[i] = -32
## print("Vérification : F=", F)
24
Pour cela, on discrétise le domaine Ω avec une grille montrée sur la
y
figure ci-contre, i.e. on a N points internes en suivant les directions y4
x et y, avec un pas h = 1/(N + 1). Tous points internes de la grille
y3
possédent donc les coordonnées
(xi , yj ) où xi = i ∗ h, yj = j ∗ h, y2
avec i, j = 1, 2, · · · , N . y1
(2) On considère l’équation originale sur chaque point (xi , yj ). Montrer que, en remplacant
les termes dérivées par les formules de dérivation numérique correspondante, on obteint
un système linéaire comme suit :
uh (x1 , y1 )
uh (x1 , y2 )
..
.
u (x , y )
h 1 N
u (x , y )
h 2 1
uh (x2 , y2 )
..
.
Aω = F, avec ω = u (x , y ) .
h 2 N
..
.
..
.
uh (xN , y1 )
uh (xN , y2 )
..
.
uh (xN , yN )
Déterminer explicitement la matrice A et le vecteur F . Ainsi, la solution uh (xi , yj ) est
une approximation de la solution u(xi , yj ).
Avant de passer au cas général, penser à commencer par un cas concret où N = 2 afin
d’obtenir un premier expérience.
(3) (On traite cette question s’il reste de temps.) Implémenter ce résultat en Python et
déterminer numériquement la solution approchée uh (xi , yj ).
Représenter graphiquement la solution approchée (en utilisant le python module “mat-
[Link]” et la fonction “plot surface(x, y, z)”).
Comparer la solution approchée à la solution analytique (en représentant graphique-
ment l’écart u(xi , yj ) − uh (xi , yj )).
25