You are on page 1of 6

TP02 : Résolution des systèmes d’équations non linéaires

Méthodes : Newton
Programmation dans Matlab :
Exercice 01 : Soit le système d’équations non linéaires a deux inconnues :
x 12− x 22 +2 x 2= 0
( 2 x 1+ x 22 −6= 0 )
1) Représentation graphique des équations du système non linéaire :
clear
clc
f1=@(x1,x2) x1^2-x2^2+2*x2;
f2=@(x1,x2) 2*x1+x2^2-6;
c1=ezplot(f1);
set(c1,'color','r')
hold on
c2=ezplot(f2);
set(c2,'color','k')
legend('x1^2-x2^2+2*x2=0','2*x1+x2^2-6=0')
title('Représentation graphique des équations')
grid on
2) On identifie graphiquement les solutions du système :
Sol=(x1, x2)
Sol1= (-4.86, -3.96)
Sol2= (-1.87, 3.12)
Sol3= (0.62, 2.17)
Sol4= (2.10, -1.33)

3) On utilise l’instruction MATLAB (syms) pour construire deux variables symboliques x1 et


x2 :
clear
clc
syms x1 x2

4) Définition du vecteur (f) associé au système d’équation non linéaire (1) :

x 12 − x 22 +2 x 2
f= ( 2 x 1+ x 22−6 )

f(1,:) = (x1^2)-(x2^2)+(2*x2);
f(2,:) = (2*x1)+(x2^2)-6;

5) Définition d’un vecteur colonne x= [0, 0]’ :

x=[0,0]'

6) On utilise la fonction MATLAB symvar ( ) pour identifier les variables symboliques du


vecteur f :
var=symvar(f);

7) On utilise la fonction MATLAB size ( ) pour obtenir la taille du vecteur var et x :


n_var=size(var,2);
n_x=size(x,1);
8) On compare le nombre de variable symbolique (n_var) au nombre des éléments du
vecteur x (n_x). S’il y a une différence générer un message d’erreur :
if n_var~=n_x
disp('erreur:verifier la taille de x et le nombre d inconnues')
y=nan;
return
end

9) On utilise la fonction MATLAB (subs( )) pour obtenir la valeur de f au point x :

y=subs(f,var,x);

10) On programme une fonction MATLAB : y=F (f, x) calculant la valeur de f au point x :
function y=F(f,x)
var=symvar(f);
n_var=size(var,2);
n_x=size(x,1);
if n_var~=n_x
disp('erreur:verifier la taille de x et le nombre d inconnues')
y=nan;
return
end
y=subs(f,var,x);

Exercice 02 :

1) On répété les étapes 3-6 de l’exercice 01 :


clear
clc
syms x1 x2
f(1,:)=(x1^2)-(x2^2)+(2*x2);
f(2,:)=(2*x1)+(x2^2)-6;
x=[0,0]';
var=symvar(f);

2) On utilise la fonction MATLAB size ( ) pour obtenir la taille du vecteur var, x et f :

n_var=size(var,2);
n_x=size(x,1);
n_equ=size(f,1);

3) On compare le nombre de variable symbolique (n_var) au nombre des éléments du


Vecteur x (n_x) et au nombre des équations (n_equ). S’il y a une différence générer
Au message d’erreur :

if (n_var~=n_x)|(n_equ~=n_x)
disp('verifier la taille de x et le nombre d inconnues ou le nbrs d equs');
y=nan;
return
end

4) On utilise la fonction MATLAB (diff ( )) pour obtenir le vecteur j :

for i=1:n_x
for j=1:n_x
y(i,j)=diff(f(i),var(j));
end
end

5) On utilise la fonction MATLAB (subs ( ) ) pour obtenir la valeur de j au point x :

y=subs(y,var,x);

6) On programme une fonction MATLAB : y= J (f, x) calculant la valeur de j au point x :


function y=J(f,x)
var=symvar(f);
n_var=size(var,2);
n_x=size(x,1);
n_equ=size(f,1);
if (n_var~=n_x)|(n_equ~=n_x)
disp('verifier la taille de x et le nombre d inconnues ou le nbrs d equs');
y=nan;
return
end
for i=1:n_x
for j=1:n_x
y(i,j)=diff(f(i),var(j));
end
end
y=subs(y,var,x);

Exercice 03 :

1) On programme une fonction MATLAB x=Newt (f, x) calculant la solution du système


d’équation non linéaire par la méthode de Newton :

function x=Newt(f,x)
k=1;
Nmax=100;
tol1=10^-2;
while k<Nmax
Fx=F(f,x);
Jx=J(f,x);
y=Jx^-1*(-Fx);
x=x+y;
if norm(y)<=tol1
disp('la méthode est exécutée avec succés')
disp('la solution obtenue est:')
disp(x)
return
end
k=k+1;
end
disp('la méthode a dépassée le nombre maximal ditérations prévue')

You might also like