Vous êtes sur la page 1sur 3

Correction exercice-2

Travaux Pratiques –Travaux dirigés


Méthodes numériques (3ER)
Série No 3
Exercice-2:
On se propose de trouver la racine, dans l’intervalle [0,1] , de l'équation :
f ( x ) = 3x + sin( x ) − e x = 0 (2)
1) Montrer que cette équation a une racine unique dans l’intervalle [0,1] .
2) En utilisant la méthode de Newton-Raphson, calculer la valeur approchée de la racine
de l'équation (2) avec une précision ε= 10-3 . On prendra x0 = 0 comme approximation
initiale.
3) Ecrire un programme Matlab (fichiers: script+fonction) qui calcule et affiche la racine
de cette équation en utilisant les données de 2).

Correction
f ( x ) = 3x + sin( x ) − e x = 0 (2)
1) - On a f(a )= f(0) = -1 < 0 et f(b) = f(1)=1,1232 >0
Puisque f(0)f(1)< 0 donc l’équation (2) admet au moins une racine dans l’intervalle [0,1] .
De plus, on f ' ( x ) = 3 + cos x − e x ≠ 0
On an : cos x ≥ 0 ∀x ∈ [0;1] et on a 3 > e x ∀x ∈ [0;1]

Donc, f ' ( x ) = 3 + cos x − e x ≠ 0 ∀x ∈ [0;1] ⇒ f ' ( x ) ≠ 0 ∀x ∈ [0;1] . Donc la racine est


unique dans l’intervalle [a,b]=[0 ;1].
2) Méthode de Newton Raphson (voir cours) :
f (x n )
x n +1 = x n −
f ' (x n )
a) Valeur approchée de la racine x * ;
Pour une valeur initiale x 0 = 0 et une precision ε = 10 − 3
f (x 0 ) −1
- x1 = x 0 − =0 − = 0.3333 et x1 − x 0 = 0,3333 > ε (on continue les
' 3
f (x 0 )
itérations)
f ( x1 ) − 0,068418
- x 2 = x1 − = 0,3333 − = 0.36017 et x 2 − x1 = 2,7x10 −2 > ε (on
' 2 . 54934
f ( x1 )
continue les itérations)
f (x 2 ) − 6.279x10 −4
- x3 = x2 − = 0,36017 − = 0.3604217 et x 3 − x 2 = 2,5x10 −4 < ε
' 2.50226
f (x 2 )
(on arrête les itérations)
x * = x 3 = 0,3604217 et n= 3 itérations
C/C
Donc, convergence après 3 itérations vers la solution : x * = 0,3604217

3)
Solution de l’exercice-6 en utilisant Matlab :
Methode-1 : on utilise la fonction fzero(f,x0) : avec x0 est l’approximation initiale .
% fichier script
clc, clear all
format long
% f(x)=0
f=inline('3*x+sin(x)-exp(x)');
% valeur initiale x0
x0=0;
% la racine r
r=fzero(f,x0)

Après execution on obtient la racine r :


r = 0.360421702960325
Methode-2 : Programme Matlab (fichiers: script+fonction)
- on définit trois fonctions :
dfnewt.m : qui retourne la dérivée de f(x)
fnewt.m : on définit la fonction f(x)
newraph.m : fonction qui retourne la racine, erreur et le nombre d’iterations.
- un fichier script à exécuter : fnewraph.m

---------------------------------------------------------
% La derivée de f(x): dfnewt.m
function ddf = dfnewt(x)
ddf = 3+cos(x)-exp(x);

----------------------------------------------------------------

% La fonction f(x) fnewt.m


function ff = fnewt(x)
ff =3*x+sin(x)-exp(x);

-------------------------------------------------------------------

% fonction newraph.m qui utilise la méthode de Newton-Raphson


function [racine,err,nbiter] = newraph(x0,tol,maxit)
% racine : racine à chercher
% err l'erreur à chaque iteration abs(xn+1-xn)
% nbiter= nombre d'iterations
%x0 : valeur initiale
%tol: precion ou tolerance
%maxit : nombre maximale d'iterations
stop= 0;
nbiter =1;
xn =x0;
f = fnewt(xn);
df = dfnewt(xn);
while (nbiter <=maxit&df~=0 )
xnp1 = xn - f/df;
err = abs(xnp1-xn);
fprintf('nbiter=%i xn = %.5f xnpun = %0.7f err = %.1e ff = %.7f ddf = %.7f \n',nbiter,
xn,xnp1,err,f,df)
if (err<=tol)
stop=1;
break;
end
xn = xnp1;
f = fnewt(xn);
df = dfnewt(xn);
nbiter = nbiter + 1;
end
racine = xnp1;
if (stop==0)
fprintf('pas de converge apres le nombre aximal %i iterations.\n',maxit);
elseif (stop==1)
fprintf('Donc, on an convergence vers r = %0.7f apres un nombre iteratios = %i avec un precison err =
%.1e \n',xnp1,nbiter,err);
end

------------------------------------------------------------------------------------------

% fichier script newraph.m à executer


clc; clear all
maxit=1000; % nombre maximal d'iterations
tol = 1.0e-3; % precision
x0=0; % valeur initiale
[racine,err,nbiter] = newraph(x0,tol,maxit)

Apres exécution du fichier script (newraph.m) on obtient ces résultats:


% avec xnpun= xn+1

nbiter=1 xn = 0.00000 xnpun = 0.3333333 err = 3.3e-01 ff = -1.0000000 ddf = 3.0000000


nbiter=2 xn = 0.33333 xnpun = 0.3601707 err = 2.7e-02 ff = -0.0684177 ddf = 2.5493445
nbiter=3 xn = 0.36017 xnpun = 0.3604217 err = 2.5e-04 ff = -0.0006280 ddf = 2.5022625
Donc, on an convergence vers r = 0.3604217 après un nombre itérations = 3 avec un
précision err = 2.5e-04

racine = 0.360421680476020
err = 2.509668983860514e-04
nbiter = 3

Vous aimerez peut-être aussi