Académique Documents
Professionnel Documents
Culture Documents
TP N°1
Méthodes numériques (Résolution de l’équation f(x)=0)
La Méthode de bissection (de dichotomie)
(a+ b)
a) Soit x n= ;
2
b) Si f ( x n) 0, alors x = x n et la méthode termine.
II. Application
1. Implémenter la méthode de la bissection sous forme d’une fonction de Matlab:
function [zero,fzero,err]=bisect(fnc,a,b,tol)
Avec les arguments d’entrée :
a. fnc : la fonction à trouver les zéros (à entrer comme un string - entre guillemet ‘ ’ ).
b. a, b : l’intervalle initial.
c. tol : largeur de l’intervalle a,bà atteindre.
Et les arguments de sortie:
a. zero, fzero : le zéro à trouver et sa valeur dans la fonction.
b. err : valeur absolue de l’erreur finale (abs(a-b) finale).
f (x) cos(x) sin(x) dans l’intervalle 1,2à implémenter dans une fonction séparée
RM
Utiliser la command feval() qui exécute une fonction spécifiée par un string pour une valeur donnée :
Ex
Université Ammar Tliji de Laghouat Méthode numérique/Département de ST
2015 – 2016 /2éme année ST
>>feval(‘sin’,pi/2)
ans= 1
function [zero,fzero,err]=bisect(f,a,b,tol);
%la fonction de dichotomie
%-------------------------
fa=feval(f,a);
fb=feval(f,b);
if fa*fb>0
str=['pas de zero dans cet intervalle'];
disp(str);
elseif fa*fb<0
while abs(b-a)>tol
zero=(a+b)/2;
fzero=feval(f,zero);
if fzero ==0
a=zero;
b=zero;
err=(a+b)/2;
fb=fzero;
break
elseif fa*fzero<0
b=zero;
fb=fzero;
elseif fb*fzero<0
a=zero;
fa=fzero;
end
str=['zero=',num2str(zero),' fzero=',num2str(fzero)];
disp(str)
end
end
%le zero et leur image:
%---------------------
zero=(a+b)/2;
fzero=feval(f,zero);
err=abs(b-a)
%la partie graphique:
%-------------------
fplot(f,[1 2]);
xlabel('x')
ylabel('la fonction f(x)')
text(zero,fzero,'le zero calculé');
hold on
plot(zero,fzero,'o')
grid on
%Exécution :
%-----------
>>[zero,fzero,err]=bisect('f',1,2,1e-5);