Telechargé par akram cumpus

T2 Python

publicité
ECOLE ROYALE
NAVALE
C.𝑰𝟏 2022/23
Python et Matlab
TP 2
Exercice1. Lire et comprendre les deux fonctions suivantes :
def dichotomie(f,a,b,eps,ITERMAX):
# initialisation
fa = f(a)
fb = f(b)
# erreur sur l intervalle
if fa*fb > 0.0:
print("La racine n est pas encadree")
# boucle principale
k=0
while(k<ITERMAX) :
c = (a+b)*0.5
fc = f(c)
if abs(b-a) <= eps:
return k,c
if fa*fc <= 0.0:
b=c
fb = fc
else:
a=c
fa = fc
k=k+1
# si on depasse ITERMAX
print("MAXIMUM D'ITERATION ATTEINT")
return k,c
#==============================================================================
def newton(f,df,x0,eps,ITERMAX):
x=x0-f(x0)/df(x0)
k=1
while ((abs(x-x0)>eps )and (k<ITERMAX)):
x0=x
x=x0-f(x0)/df(x0)
k=k+1
return k, x
# ==============================================================================
Exercice 2. Soit f : ℝ→ℝ, 𝑥 2 − 𝑥 − 2.
(1) Pour cette fonction, cherchez une approximation du zéro 𝑐 = 2 dans l'intervalle [0; 3; 5]
par la méthode de dichotomie.
(2) Programmez la méthode de Newton en partant de la valeur initiale x = 1.
(3) Programmez la méthode de Lagrange ou la sécante.
(4) Comparez le nombre d'itérations nécessaires pour ces méthodes pour obtenir c avec la
précision 𝜖 = 10−3 ,𝜖 = 10−6 puis 𝜖 = 109 .
Exercice 3. Soit f : ℝ→ℝ , cos(2𝑥)2 − 𝑥 2 .
(1) Cherchez une approximation du zéro 𝑐 ≅ 0.51493326611294 par les méthodes suivantes :
 la méthode de la dichotomie sur [0; 1.5];
 la méthode de Lagrange sur [0; 1.5];
 la méthode de Newton, en partant de la valeur initiale x = 0.8.
(2) Comparez le nombre d'itérations nécessaires pour ces méthodes pour obtenir 𝑐 avec la
précision 𝜖 = 10−6.
(3) Pour chaque méthode, tracez une courbe qui permet d'afficher l'erreur 𝜖𝑘 = |𝑥𝑘 − 𝑐| entre
le point 𝑥𝑘 calculé à l'itération 𝑘 et la solution 𝑐 en fonction du nombre 𝑘 d'itérations.
Prenez soin d'utiliser une échelle logarithmique pour l'axe des ordonnées.
(4) Donnez une conclusion sur le comportement de l'erreur pour ces différentes méthodes.
Téléchargement