Sous-sections

6.5 Fonctions

Une fonction sont écrites dans un fichier avec une extension .m (M-File) et le nom du fichier doit être le nom de la première fonction définie (la seule visible). On l'exécute en tapant le nom avec des arguments.

définition d'une fonction
fonction foo
function [var1, ..arguments de sortie] = foo(arg1,..arguments d'entrée)

liste d'instruction matlab;

utilisation
 
[var1,var2,..]=foo(arg1,arg2,..)

ATTENTION
les arguments d'entrée ne peuvent pas être modifiés dans la fonction (passage par valeur)
fonction racine
 

\begin{lstlisting}
function x=racine(a,b)
fa=f(a); fb=f(b); x=(a+b)/2;
if (fa*fb...
...=x; fa=fx;
else
b=x; fb=fx;
end
end
function y=f(x)
y=x^3-2*x-5
\end{lstlisting}

6.5.1 Exemples

Fonction calculant $n!$

6.5.1.1 1ere version récursive

  1. function y=fact(n)
  2. if (n<=1) y=1
  3. else y=n*fact(n-1)
  4. end

6.5.1.2 2nd version avec une boucle

  1. function y=fact(n)
  2. y=1;
  3. for i=2:n, y=y*i, end

6.5.1.3 3ieme version optimisée

  1. function y=fact(n)
  2. y=prod(1:n);

6.5.2 Pointeurs vers une fonction

function handle
pointeur vers une fonction=adresse
ptr_fonct=@fonction

evaluation
feval(ptr_fonct,liste arguments)
Calcul de l'intégrale $I=\int_{a}^{b}f(x)\, dx$ par la méthode des trapézes


\begin{lstlisting}
function A=trapezes(ptr_f,a,b,n)
h=(b-a)/n; X=[a:h:b]; Y=feval(ptr_f,X);
A=h*((Y(1)+Y(n+1))/2+sum(Y(2:n)));
\end{lstlisting}

Utilisation

>> fp=@sin

>> A=trapezes(fp,0,pi)


Pr. Marc BUFFAT
marc.buffat@univ-lyon1.fr
2007-02-08