1.7 Le langage MATLAB
37
sée pour forcer une interruption prématurée (quand une certaine condition est satisfaite).
A titre d’illustration, on propose d’écrire une fonction pour approcher
le nombre d’or α = 1.6180339887 . . .. Celui-ci est la limite pour k → ∞
du quotient f k /f k−1 de deux termes consécutifs de la suite de Fibonacci.
On itère par exemple jusqu’à ce que la différence entre deux quotients
consécutifs soit inférieure à 10
−4 :
function [ golden ,k ]= f i b o nacc i0
% F I B ON ACCI0: A p p r ox imat ion du nombre d ’ or
f (1) = 0; f (2) = 1; g o l d enold = 0;
kmax = 100; tol = 1.e -04;
for k = 3: kmax
f (k ) = f(k -1) + f(k -2); golden = f( k )/f (k -1);
if abs( golden - g o l d enold) < tol
return
end
g o l deno ld = golden ;
end
return
L’exécution est interrompue soit après kmax=100 itérations, soit quand
la valeur absolue de la différence entre deux itérées consécutives est plus
petite que tol=1.e-04. On peut alors écrire :
>> [alpha,niter]=fibonacci0
alpha =
1.61805555555556
niter =
14
Après 14 itérations, la fonction a retourné une valeur approchée dont les
5 premières décimales coïncident avec celles de α.
Le nombre de paramètres d’entrée et de sortie d’une fonction MATLAB peut varier. Par exemple, on peut modifier la fonction Fibonacci
ainsi :
function [ golden ,k ]= f i b o nacc i1( tol , kmax )
% F I B ON ACCI1: A p p r ox imat ion du nombre d ’ or
%
La t o l é rance et le nombre maximum d ’ i t e r ations
%
peuvent être donnés en entrée
if nargin == 0
kmax = 100; tol = 1.e -04; % valeurs par défaut
elseif nargin == 1
kmax = 100; % valeurs par défaut s e u l ement pour kmax
end
f (1) = 0; f (2) = 1; g o l d enold = 0;
for k = 3: kmax
f( k) = f (k -1) + f (k -2);
golden = f (k )/f (k -1);
if abs ( golden - g o l den old) < tol
return
end
g o l d enold = golden ;
end
return
Précédent

- 50/374

Suivant