Vous êtes sur la page 1sur 4

Faculté des Sciences Semlalia Marrakech 2019-2020

Département de Physique
Marrakech
Travaux Pratiques –Travaux dirigés
Méthodes numériques (3ER)
Correction de la série No 3

Exercice-1
f ( x ) = 2 x − cos x = 0 (1)
1) - On a f(a )= f(0) = -1 < 0 et f(b) = f(0,5)=1-cos(0,5) =0,1224 >0
Puisque f(0)f(0.5)< 0 donc l’équation (1) admet au moins une racine dans l’intervalle [0,0.5] .
De plus, on f ' ( x ) = 2 + sin x ≠ 0 ∀x ∈ [0,0,5] donc la racine est unique dans l’intervalle
[a,b]=[0,0.5].
2) Méthode du point fixe :
On commence par transformer l’équation (1) en une équation de la forme (voir cours) :
x = ϕ( x ) (2)
La fonction ϕ est appelée fonction d’itération.
Dans notre cas, l’équation (1) peut s’écrire sous la forme :
cos x cos x
x= ⇒ ϕ( x ) = (3)
2 2
a) Condition de convergence de l’algorithme du point fixe:
Il faut que : ϕ ' ( x ) ≤ M < 1 ∀x ∈ [a , b] (4)
sin x
D’après (3) on a : ϕ' (x ) = − ; a= 0 et b=0,5
2
sin x 0.4797
Soit M= max( ϕ ' ( x ) ) = max( ) = ≈ 0.24 < 1
2 2
x∈[0,0.5] x∈[0,0.5]
C/C
ϕ ' ( x ) est bornée par une constante M=0.24<1 ⇒ Convergence de l’algorithme du point fixe

x n +1 = ϕ( x n )
b) Valeur approchée de la racine x * ;
On a : x n +1 = ϕ( x n ) avec x 0 = 0,5 et ε = 5x10 − 3
cos(0,5)
- x1 = ϕ( x 0 ) = ϕ(0,5) = = 0,43879 et x1 − x 0 = 6,12x10 −2 > ε (on continue les
2
itérations)
x 2 − x1 = 1,38x10 −2 > ε
cos(0,43879)
- x 2 = ϕ( x1 ) = ϕ(0,43879) = = 0.45263 et (on
2
continue les itérations)
= 0.44965 et x 3 − x 2 = 2,98x10 −3 < ε (on arrête
cos(0,45263)
- x 3 = ϕ( x 2 ) = ϕ(0,45263) =
2
les itérations)
x * = x 3 = 0,44965 et n= 3 itérations
C/C
Donc, convergence après 3 itérations vers la solution x * = 0,44965

3) Programme Matlab (fichiers: script+fonction)

Réponse: deux fichiers fonction ( fifixe.m et pointfixe.m) et un fichier script fichier script
pointfixe.m à exécuter

%fonction fifixe.m pour le schéma x = fi(x)


function x = fifixe(x0)
x = 0.5*cos(x0);

% fonction point fixe pointfixe.m


function [r,err,niter] = pointfixe(x0,tol,maxit)
% x0: approximation initiale
% tol : precision ou tolérance
% maxit: Nombre maximal d'itérations
% r la racine
% err: l'erreur à chaque iteration
% niter: nombre d'itérations
stop=0;
niter = 1;
xn = x0;
while (niter <= maxit)
xnp1 = fifixe(xn);
err = abs((xnp1-xn));
fprintf('iteration i = %i xnp1 = %0.5f xn = %0.5f err =
%0.2e \n',niter,xnp1,xn,err);
if (err<=tol)
stop=1;
break;
end
xn = xnp1;
niter = niter + 1;
end
r = xnp1;
if (stop==0)
fprintf('pas de converge apres le nombre aximal %i
iterations.\n',maxit);
elseif (stop==1)
fprintf('on an convergence vers r = %.5f apres un nombre
iteratios = %i avec une precison err = %0.2e
\n',xnp1,niter,err);
end

% fichier script à éxecuter


clc, clear all; clf
format long
%-------------------------------------------------------------
-------------
% On tracer le graphe afin de voir si la racine existe et elle
est unique
f=inline('2*x-cos(x)');
x=[0:0.001:0.5];
y=feval(f,x);
n=length(x);
z=zeros(1,n);
plot(x,y,x,z,'r')
xlabel('x')
ylabel('f')
grid on
%------------------------------------
%*******************************************
% On fait appel à la fonction poinfixe pour calculer et
afficher la
% solution
x0=0.5;
maxit = 1000;
tol = 5.0e-3;
[r,err,niter] = pointfixe(x0,tol,maxit);
%****************************************************

% Racine par la fonction fzero de Matlab


r2=fzero(f,x0)

Après exécution du fichier script on obtient:

iteration i = 1 xnp1 = 0.43879 xn = 0.50000 err = 6.12e-02


iteration i = 2 xnp1 = 0.45263 xn = 0.43879 err = 1.38e-02
iteration i = 3 xnp1 = 0.44965 xn = 0.45263 err = 2.98e-03
on an convergence vers r = 0.44965 apres un nombre iteratios =
3 avec une precison err = 2.98e-03

r2 =

0.450183611294874
0.4

0.2

-0.2
f

-0.4

-0.6

-0.8

-1
0 0.1 0.2 0.3 0.4 0.5
x

Vous aimerez peut-être aussi