You are on page 1of 9

UE335 MATLAB

Correction TD semaine 3
(not sur 20 points)

Exercice 1 : (/7 points)


Soit la fonction f(x)=x3-9 ; nous dsirons dterminer la solution de l'quation f(x) = 0 pour
x>0.
1. Dterminer l'expression de la drive de f(x) (/1 point)
La driv de f(x) est : f(x)=3x
2. En vous aidant du cours, implmenter sous Matlab, l'algorithme de Newton Raphson
en 1D, afin de rsoudre f(x)=0 (/3 points)
La relation de rcurrence de lalgorithme de Newton Raphson est : xk+1 = xk f(xk)/f(xk)
Do le script matlab :
% methode de newton raphson
clear all;
close all;
figure(1);clf;
x = -20:0.1:20;
y = x.^3-9;
plot(x,y);
grid;
% f(x) = x^3-9
% f'(x) = 3*x^2
critere = 1;
seuil = 0.00001;
xprec = 12
tampon_critere = [critere];
tampon_x = [xprec];

while (critere > seuil)


xsuiv = xprec - (xprec^3-9)/(3*xprec^2)
critere =abs(xsuiv-xprec);
xprec = xsuiv;
tampon_x = [tampon_x xprec];
tampon_critere = [tampon_critere critere];
end;
figure(2);clf;
plot(tampon_x,'ro-');
xlabel('numro d''iteration');
ylabel('valeur xk');
grid;
figure(3);clf;
plot(tampon_critere,'ro-');
xlabel('numro d''iteration');
ylabel('valeur critre d''arret');
grid;

3. Le seuil d'arrt sera pris gal 0.00001, et le point de dpart x=12


Voir ci-dessus
4. Donner une copie d'cran de votre script matlab
Voir ci-dessus
5. Excutez votre script et donner la solution de f(x)=0 (copie d'cran des figures traces)
(/2point)

La figure suivante reprsente la valeur xk au cours des itrations, nous voyons que la valeur
de xk converge vers la valeur gale 2.08, qui correspond la solution de lquation x3-9=0,
en effet en calculant 2.083=8.9989

La figure suivante reprsente la valeur du critre darrt en fonction du numro ditration,


nous voyons que le critre darrt devient infrieur au seuil de 0.00001 aprs 10 itrations :

6. Indiquer le nombre d'itration parcouru par l'algorithme (/1 point)


Le nombre ditration parcouru par lalgorithme est de 10 itrations.

Exercice 2 : (/13 points)


Nous considrons un systme de radionavigation compos de 3 metteurs de coordonnes
connues : E1 (0m,0m), E2 (0m,1000m) et E3 (1000m,0m). Le rcepteur R de coordonnes
inconnues (x,y), reoit les signaux provenant des 3 metteurs et est capable de dterminer les
3 distances suivantes : d1 (distance entre E1 et R), d2 (distance entre E2 et R) et d3 (distance
entre E3 et R). Le rcepteur mesure : d1=580m d2=860m d3=590m. Quelles sont les
coordonnes du rcepteur ? (dans les questions suivantes, l'unit de distance est le mtre)
1. Donner les 3 expressions des 3 distances en fonction des coordonnes (x,y) du
rcepteur (/1 point)
Distance entre R et E1 :
Distance entre R et E2 :
Distance entre R et E3 :

2. Donner les expressions des fonctions f et g, tant les 2 diffrences de distances :


f(x,y)=d1-d2 et g(x,y)=d1-d3 en fonction des coordonnes (x,y) du rcepteur (/2
points)

3. Donner les expressions des drives partielles par rapport x et y, des fonctions f(x,y)
et g(x,y) (/4 points)

4. Donner le dveloppement en srie de Taylor au 1er ordre des fonctions f et g (/2


points)

5. Raliser l'implmentation de l'algorithme newton raphson en 2D, permettant de


calculer les coordonnes x et y du rcepteur (seuil d'arrt = 0.00001 et point de dpart
x=100m et y=100m), donner une copie d'cran de votre script (/2 points)
clear all
close all
%-------------------- Dclarations des variables ------------------------seuil = 0.00001;
xprec = 100;
yprec = 100;
critere = 100;
d1 = 580;
d2 = 860;
d3 = 590;
tampon_critere = [];
tampon_x = [100];
tampon_y = [100];
while(critere>seuil)
%-------------------- Estimation de f et g ------------------------estim_f = sqrt(xprec.^2+yprec.^2)-sqrt(xprec.^2+(yprec-1000).^2);
estim_g = sqrt(xprec.^2+yprec.^2)-sqrt((xprec-1000).^2+yprec.^2);
%-------------------- Calcul d'erreur ------------------------------err_f = (d1 - d2) - estim_f;
err_g = (d1 - d3) - estim_g;
%-------------------- Calcul du dplacement ------------------------df_dx
df_dy
dg_dx
dg_dy

=
=
=
=

xprec/(sqrt(xprec^2+yprec^2))-xprec/(sqrt(xprec^2+(yprec-1000)^2));
yprec/(sqrt(xprec^2+yprec^2))-(yprec-1000)/(sqrt(xprec^2+(yprec-1000)^2));
xprec/(sqrt(xprec^2+yprec^2))-(xprec-1000)/(sqrt((xprec-1000)^2+yprec^2));
yprec/(sqrt(xprec^2+yprec^2))-yprec/(sqrt((xprec-1000)^2+yprec^2));

mat = [df_dx,df_dy;dg_dx,dg_dy];
mat_err = [err_f;err_g];
vect = inv(mat)*mat_err;

dx = vect(1);
dy = vect(2);
%-------------------- Actualisation de x et y ------------------------xsuiv = xprec + dx;
ysuiv = yprec + dy;
xprec = xsuiv;
yprec = ysuiv;
%-------------------- Critre d'arrt ------------------------critere = sqrt(dx.^2 + dy.^2)
tampon_x = [tampon_x xprec];
tampon_y = [tampon_y yprec];
tampon_critere = [tampon_critere critere];
end
figure(1);clf;
plot(tampon_x,'bs-');
ylabel('coordonne x');
xlabel('itration');
grid;
figure(2);clf;
plot(tampon_y,'bs-');
ylabel('coordonne y');
xlabel('itration');
grid;
figure(3);clf;
hold on;
plot(tampon_x,tampon_y,'ro-');
plot(0,0,'bs');
plot(0,1000,'bs');
plot(1000,0,'bs');
xlabel('x');
ylabel('y');
grid;
figure(4);clf;
plot(tampon_critere);
ylabel('critere d''arret');
xlabel('numro d''itration');
grid;

6. Excutez votre script, puis tracer l'volution du critre d'arrt et de la position, en


fonction des itrations, et donner les coordonnes du rcepteur (x,y) (/2 points)
Aprs excution du script, nous obtenons les figures suivantes :

Cette figure reprsente lvolution de la coordonne x en fonction des itrations, nous


convergeons vers x = 494.2m.

Cette figure reprsente lvolution de la coordonne y en fonction des itrations, nous


convergeons vers y = 299.1m.
7

Cette figure reprsente lvolution de lestimation de la position du rcepteur en fonction des


itrations, nous convergeons vers (x,y)=(494.2m,299.1m) en partant du point de dpart
(100m,100m).

Cette figure reprsente lvolution du critre darrt en fonction du numro ditration, nous
voyons qu la cinquime itration, le critre darrt est gal 3.8e-11, ce qui est infrieur au
seuil de 0.00001, ce qui arrte la boucle WHILE. Nous convergeons donc au point optimal
aprs 5 itrations.

You might also like