Le piège classique

Maintenant que vous connaissez les syntaxes les plus courantes de la fonction plot, vous pouvez tracer des fonctions plus complexes que les exemples déjà donnés ici.

Si vous le faites, vous allez très probablement être confrontés à une erreur classique, et même en le sachant, vous serez sans doute amenés à tomber dans le piège !

Exemple

Essayez de tracer le graphe de la fonction \(x \, \rightarrow \, x \sin{(x)}\) sur l'intervalle \([0,2\pi]\), en adaptant ce que l'on a vu jusqu'ici :

>> x = 0:2*pi/100:2*pi;
>> plot(x, x*sin(x));
 
    ??? Error using ==> *
    Inner matrix dimensions must agree.

Question / Réponse

Question

Quel est le problème ? Pourquoi MATLAB ne sait pas tracer cette courbe, qui n'est pas si complexe que cela ? Et pourquoi MATLAB prétend que les matrices ne sont pas de même dimension ?

Réponse

Dans cette exemple, on veut en réalité calculer le produit arithmétique \(x*\sin(x)\) pour chacun des \(x\) du vecteur ligne x. C'est une multiplication terme à terme, ce qui implique l'opérateur .*. La syntaxe correcte est donc celle-ci :

plot(x, x.*sin(x));

Méthode

Lorsque l'on écrit une expression arithmétique dans les arguments de la fonction plot, il faut utiliser systématiquement les opérateurs terme à terme .* ./ et .^ au lieu de * / et ^.