Définition d'une fonction anonyme
Définition : fonction 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 ?
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. )
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 |