Définition d'une fonction anonyme

Définitionfonction anonyme

Une fonction anonyme est une fonction MATLAB qui est définie directement, sans la création préalable d'un fichier spécifique. La fonction est dite anonyme, parce qu'elle n'a pas de nom explicite.

Le symbole @ permet la matérialisation de cette création de fonction anonyme.

le symbole @, est un handle, c'est-à-dire un pointeur vers une fonction.

Syntaxe

La syntaxe générale pour définir une fonction anonyme est :

Variable_stockant_la_fonction = @(argument1, argument2, ....) expression_de_la_fonction

Généralement, on utilise les fonctions anonymes pour créer des raccourcis syntaxiques.

Les arguments de la fonction, s'ils existent, sont déclarés entre parenthèses juste après le handle @. La variable dans laquelle est stockée la définition de la fonction anonyme fait office de nom, car c'est grâce à cette variable que l'on pourra appeler la fonction anonyme, en précisant les arguments nécessaires :

1
sortie = Variable_stockant_la_fonction(valeur1, valeur2, ...) ;

Exemple

À titre d'exemple, on peut définir une fonction anonyme qui calcule le carré d'une valeur ou d'un tableau :

1
carre = @(x) x.^2;

que l'on peut utiliser directement :

1
2
3
4
>> carre(4)
  
ans =
    16

De même, on peut définir une fonction plus générale qui calcule la puissance d'une valeur ou d'un tableau :

1
puissance = @(x,n) x.^n;

Ce qui donne :

1
2
3
4
>> puissance(3,3)
  
ans =
    27

Question / Réponse

Question

Comment définir une fonction h(x) = x * \sin\left(\frac{\pi  x}{2}\right) sous forme de fonction anonyme ?

Réponse

Une fonction anonyme peut faire référence à une autre fonction anonyme.

Exemple

La fonction carre peut être définie à partir de la fonction puissance :

1
carre = @(x) puissance(x,2);

Ce qui donne :

1
2
3
4
>> carre(1:9)
  
ans =
    1 4 9 16 25 36 49 64 81

Les fonctions anonymes peuvent être imbriquées, pour définir des fonctions un peu plus complexes...

Question / Réponse

Question

Comment définir l'expression mathématique g(c) = \int_{0}^{2\pi} x \sin\left(\frac{\pi x}{c} \right) dx ?

( La fonction quad permet l'évaluation numérique d'une intégrale. )

Réponse

Complément

Nous verrons plus loin que l'un des intérêts majeurs des fonctions anonymes est la souplesse que permet cette syntaxe.

En effet, lorsque certaines fonctions prédéfinies de MATLAB ne permettent de travailler qu'avec des fonctions à une seule variable, l'écriture d'une fonction anonyme permet de définir localement une fonction à une seule variable à partir d'une fonction qui en comporte normalement plusieurs.

L'exemple classique est la fonction fzero qui permet de trouver la racine d'une fonction selon une seule variable.

Si je recherche quelle est la valeur de x dont la puissance 5 vaut 60466176, je peux écrire :

1
2
3
4
>> fzero( @(x) puissance(x,5) - 60466176, 3)
  
ans =
    36