Découvrir Matlab/Calculs élémentaires
2. Calculs élémentaires
Matlab peut s'utiliser comme une calculatrice scientifique, de type calculatrice graphique. Il suffit de taper une formule dans une syntaxe relativement standard, et d'appuyer sur le retour chariot pour avoir le résultat.
Opérateurs et fonctions classiques
modifierMatlab utilise les fonctions et opérateurs classiques :
+
(addition),-
(soustraction),*
(produit),/
(division),^
ou**
(élévation à une puissance),sqrt()
(racine carrée),cos()
,sin()
,tan()
pour les fonctions trigonométriques de base,acos()
,asin()
,atan()
pour leurs réciproques,cotg()
pour la cotangente ;- les fonctions trigonométriques hyperboliques
cosh()
,sinh()
,tanh()
,acosh()
,asinh()
,atanh()
log()
pour le logarithme népérien (ln),log10()
pour le logarithme en base 10 (log10),log2()
pour le logarithme en base 2 (log2),exp()
pour la fonction exponentielle,floor()
pour la partie entière (arrondi vers -∞),ceil()
pour l'arrondi au supérieur (arrondi vers +∞),fix()
pour la troncature (arrondit à l'entier vers 0, différent defloor
pour les nombres négatifs),round()
pour l’arrondi au plus proche (0,5 → 1),abs()
pour la valeur absolue,erf()
pour la fonction d'erreur de Gauss,rand
pour avoir un nombre aléatoire entre 0 et 1, suivant une loi uniforme ;randn
pour avoir un nombre aléatoire suivant une loi normale centrée réduite (moyenne 0, variance 1) ;- la factorielle de n peut s'obtenir par
prod(1:n)
ou bien pargamma(n+1)
; - …
Le séparateur décimal est le point.
Les puissances de 10 se notent avec la lettre « e » en minuscule ou en capitale : 5,2·103 s'écrit 5.2e3
ou 5.2E3
, 5,2·10-3 s'écrit 5.2e-3
ou 5.2E-3
. On peut aussi utiliser le « d » minuscule ou capital.
Par défaut, Matlab affiche les résultats avec quatre décimales. On peut modifier le nombre de caractères avec la fonction format
:
format short
: valeur par défaut, notation fixe à 4 décimales ;format long
: notation fixe à 7 décimales pour un réel simple, 14 ou 15 décimales pour un réel double ;format short e
,format long e
: notation scientifique exponentielle à virgule flottante ;format short g
,format long g
: choisit « le mieux » entre notation fixe et notation exponantielle à virgule flottante ;format short eng
,format long eng
: notation ingénieur exponentielle (puissances de 10 multiples de 3) ;
Mentionnons également la fonction clear
qui permet d'effacer toutes les variables (dont les fonctions définies par l'utilisateur). Cela peut être utile lorsque l'on a procédé par essai-erreur et que l'on veut remettre les « compteurs à zéro ».
- Vocabulaire
- Dans Matlab, une « fonction interne[1] » est une fonction prédéfinie. Par opposition, les fonctions définies par l'utilisateur sont appelées « fonctions extérieures ».
Constantes particulières
modifierPour entrer l’imaginaire i, il faut utiliser i
ou j
; il figure simplement sous la forme « 0 + 1.0000i
» dans les résultats.
Pour entrer l’infini ∞, il faut utiliser Inf
; il figure simplement sous la forme « Inf
» dans les résultats.
La valeur de π s’obtient par pi
.
Lorsqu'une opération invalide se produit, certains programmes retournent un nombre particulier appelé « NaN » pour not a number (littéralement « ceci n'est pas un nombre »)[2]. Dans Matlab, cette valeur est obtenue par nan
et s'affiche sous la forme NaN
.
Variables
modifierOn peut définir des variables simplement sous la forme NomVariable=valeur
.
NomVariable est une chaîne de caractères commençant par une lettre ; Matlab est sensible à la casse, c'est-à-dire que les variables « a » et « A » sont deux variables différentes. Le type de la variable (entier, réel, imaginaire) est géré automatiquement.
La variable ans
contient le dernier résultat (pour answer, « réponse » en anglais).
La fonction who
affiche les variables déclarées (who? signifie « qui ? » en anglais).
Exemples
modifier- Exemple 1
>> asin(sqrt(2)/2) ans = 0.7854 >> ans/pi*180 ans = 45.0000
- (puisque sin(45°) = √2/2)
- Exemple 2
>> exp(i*pi/2) ans = 0.0000 + 1.0000i
- Exemple 3
- calcul de la pression, en Pa, de 2,5 moles de gaz parfait dans un volume de un litre (10-3 m3) à une température de 300 K (26,85 °C)
>>n=2.5;R=8.314472;T=300;V=1e-3; >> n*R*T/V ans = 6235854
- soit environ 6,2·106 Pa.
Booléens
modifierLorsque l’on assigne une valeur booléenne, on utilise true
pour « vrai » et false
pour « faux ». Le résultat de l’opération affiché est respectivement 1
ou 0
.
L’opérateur ou est noté « |
» (tube), et est noté « &
» (esperluette), non est noté « ~
» (tilde).
- Exemple
>> (true & false) | false ans = 0
On peut aussi utiliser les fonctions or(A,B)
, and(A,B)
et not(A)
, par exemple
>> or(and(true,false),false) ans = 0
Un booléen peut également s’obtenir en comparant deux valeurs, avec les relations d’égalité ==
et de différence ~=
ou ~=
, et les relations d'ordre <
, <=
, >
et >=
.
- Exemple
>> a=3 a = 3. >> a==3 ans = 1 >> a<2 ans = 0
Polynômes et fractions rationnelles
modifierMatlab manipule les polynômes et fractions rationnelles formels, c'est-à-dire non pas en tant que fonction, mais en tant qu'objets mathématiques, éléments du corps des polynômes ou des fractions rationnelles.
Pour Matlab, un polynôme est simplement un vecteur contenant les coefficients par ordre de puissance décroissant ; ce sont les fonctions utilisées qui sont spécifiques.
- Exemple de définition de polynôme
>> p = [1 2 1] p = 1 2 3
pour le polynôme p(x ) = 1·x2 + 2·x + 3.
Il n'y a pas de manière spécifique de représenter une fraction rationnelle. Lorsqu'une fonction manipule la fraction rationnelle p/q, elle s'applique sur la paire de vecteurs (p,q)
.
Fonctions spécifiques aux polynômes
modifierLa fonction polyval(p,a)
donne la valeur de p(a )
- Exemple
>> p=[1 2 1]; >> polyval(p,5) ans = 36
car 1·52 + 2·5 + 1 = 36.
La fonction poly([a b c])
crée un polynôme dont les racines sont a, b et c.
- Exemple
>> poly(0) ans = 1 0
c'est-à-dire le polynôme (x - 0) = 1·x + 0.
>> poly([1 2]) ans = 1 -3 2
c'est-à-dire le polynôme (x - 1)·(x - 2) = 1·x2 - 3·x + 2.
La fonction roots(p)
donne les racines du polynôme p.
- Exemple
>> p=[1 5 6 4]; >> roots(p) ans = -3.6590 -0.6705 + 0.8023i -0.6705 - 0.8023i
car 1·x3 + 5·x2 + 6·x + 4 ≈ (x - 3,6590)·(x - 0,6705 + 0,8023i )·(x - 0,6705 - 0,8023i ).
La multiplication formelle de deux polynômes se fait en utilisant la fonctiond econvolution, conv
.
- Exemple
>> p=[1 1]; >> q=[1 -1]; >> conv(p,q) ans = 1 0 -1
car (x + 1)·(x - 1) = 1·x2 + 0·x - 1.
La fonction polyder(p)
fait la dérivation formelle du polynôme ; polyder(p,q)
fait la dérivée de p×q.
- Exemple
>> p=[1 2 1]; >> polyder(p) ans = 2 2
car (1·x2 + 2·x + 1)' = 2·x + 2.
Fonctions spécifiques aux fractions rationnelles
modifierLa fonction de déconvolution, deconv
, fait la division euclidienne formelle de deux polynômes sous la forme d'un polynôme quotient et d'un polynôme reste.
- Exemples
>> p1=[1 1 ]; >> p2=[1 -1]; >> [q,r]=deconv(p1,p2) q = 1 r = 0 2
car (x + 1) = (1)×(x - 1) + (2).
>> p1=[1 1 1]; >> [q,r]=deconv(p1,p2) q = 1 2 r = 0 0 3
car 1·x2 + 1·x + 1 = (x + 2)×(x - 1) + (0·x2 + 0·x + 3).
La fonction residue
fait la décomposition en éléments simples d'une fraction rationnelle, sous la forme
- ,
avec
- ri : résidu ;
- pi : pôle ;
- k : terme direct (polynôme).
Par exemple :
>> p=1; >> q=[1 0 -1]; >> [r,p,k] = residue(p,q) r = -0.5000 0.5000 p = -1 1 k = []
car .
La fonction polyder
fait également la dérivation formelle de fractions rationnelles, à condition qu'on lui assigne un « vecteur de vecteur ».
- Exemple
>> p1=[1 1 1]; >> p2=[1 -1]; >> [p,q]=polyder(p1,p2) p = 1 -2 -2 q = 1 -2 1
car .
Chaînes de caractère
modifierPour Matlab, un caractère est un nombre, le code Unicode du caractère. Une chaîne de caractères est un vecteur ligne contenant les code Unicode. Par exemple :
>> 'a'+'b' ans = 195
Ici, Matlab fait la somme des codes du a et du b, respectivement 97 et 98.
La fonction unit8
donne le code Unicode du caractère, ou des caractères de la chaîne.
- Exemple
>> uint8('a') ans = 97 >> a='hello'; >> uint8(a) ans = 104 101 108 108 111
La fonction char
permet à l'inverse de transformer un entier en un caractère, ou un vecteur ligne en une chaîne de caractères.
- Exemple
>> a=[97 98]; >> char(a) ans = ab
La concaténation de deux chaînes de caractère se fait simplement en metant les deux chaînes dans un vecteur ligne :
>> a='hello'; >> [a, ' world'] ans = hello world
On peut aussi utiliser la fonction strcat(a,' world')
.
La fonction eval()
permet de transformer une chaîne en une expression Matlab (on parle « d'évaluation de la chaîne ») et de l'exécuter.
- Exemple
>> a='1'; >> eval(a)*2 ans = 2. >> b='x';c='=5';eval([b c]) x = 5 >> x^2 ans = 25.
- la chaîne [b c] est 'x=5', cette chaîne est exécutée, ce qui signifie que la valeur 5 est attribuée à la variable x, ce que confirme le calcul fait par la suite.
La fonction char
permet à l'inverse de transformer un entier en un caractère, ou un vecteur ligne en une chaîne de caractères.
- Exemple
>> a = [49 50]; >> char(a) ans = 12
Ceci est utile pour « fabriquer » des chaînes de caractère.
Matrices
modifierMatlab a été conçu pour le calcul matriciel. Les éléments des matrices peuvent être de tout type (nombre réel, nombre complexe, booléen, polynôme, fraction rationnelle, chaîne de caractères…).
Définir une matrice
modifierPour définir une matrice à partir de ses coefficients, on les place entre deux crochets […]
. Les éléments d’une ligne sont séparés d’un espace ou d’une virgule, les lignes sont séparées d’un point-virgule. À l’affichage, la matrice est représentée comme un tableau encadré par des points d’exclamation.
- Exemple
>> [1,0,0;0,1,0;0,0,1] ans = 1 0 0 0 1 0 0 0 1
La matrice vide est notée par []
.
L’expression M(i,j)
désigne l’élément (i, j) de la matrice M.
Le caractère :
(deux-points) signifie « tous les indices », par exemple M(1, :)
est la première ligne de la matrice (c’est un vecteur ligne).
L’expression N1:N2
permet de générer une matrice-ligne dont le premier coefficient est N1, le dernier est inférieur ou égal à N2, et le pas entre les coefficients est 1. L’expression N1:pas:N2
permet de générer une matrice-ligne en choisissant le pas. Par exemple
>> 1.1:5.2 ans = 1.1000 2.1000 3.1000 4.1000 5.1000 >> 1:2:5 ans = 1 3 5 >>'a':'d' ans = abcd
On peut aussi utiliser la fonction
linspace(x1, x2, n)
pour générer une matrice ligne de n valeurs espacées régulièrement entre x1 et x2.
La fonction zeros(m,n)
crée une matrice m×n remplie de 0 ; la fonction ones(m,n)
crée une matrice m×n remplie de 1. La fonction eye(n,n)
crée une matrice unité n×n.
Fonctions et opérateurs sur les matrices
modifierToutes les fonctions numériques s’appliquent à des matrices ; par exemple si M est une matrice, alors cos(M)
sera la matrice dont les coefficients sont les cosinus des coefficients de M.
La fonction size(M)
renvoie la taille de la matrice sous la forme d’une matrice 1×2 contenant le nombre de lignes puis le nombre de colonnes.
Les opérations spécifiques aux matrices classiques sont :
- la transposition : il suffit de mettre une apostrophe
’
après la matrice ; - le produit de matrices :
*
; - produit et rapport élément par élément :
.*
et./
; - le produit tensoriel de Kronecker
kron()
; - le déterminant d’une matrice carrée M :
det(M)
; - la trace d’une matrice carrée M :
trace(M)
; - l’inverse d’une matrice inversible M :
inv(M)
; - la somme des éléments de la matrice colonne par colonne :
sum(M)
(donne un vecteur ligne) ;sum(sum(M))
donne la somme de tous les éléments de M ; - le produit des éléments de la matrice colonne par colonne :
prod(M)
(donne un vecteur ligne) ;prod(prod(M))
donne la somme de tous les éléments de M.
La fonction max(M)
renvoie la plus grand élément de chaque colonne de la matrice, et la fonction min(M)
renvoie le plus petit. Les commandes max(max(M))
et min(min(M))
renvoient respectivement l eplus grand et le plus petit élément de la matrice.
Si l'on tape [m,k]=max(A)
, alors Matlab met les valeurs des maxima des colonnes dans le vecteur variable m, et l'indice de leur ligne dans la variable k — on peut utiliser d'autres noms de variable que m et k. De même pour [m,k]=min(A)
.
Vecteur
modifierUn vecteur est une matrice ligne ou colonne (matrice 1 × n ou n × 1) ; l’expression V(i)
désigne la composante i du vecteur V.
Si l'on veut avoir la taille d'un vecteur v
(ligne ou colonne) sous la forme d'un entier, on peut utiliser
max(size(v))
ou biensize(v,'*')
Si V1 et V2 sont des vecteurs colonnes, alors le produit scalaire est
V1' * V2
;
si ce sont des vecteurs lignes, le produit scalaire est
V1 * V2'
.
Importance des matrices dans Matlab
modifierLes matrices sont très utilisées dans Matlab pour définir les paramètres. Ainsi, pour tracer une courbe, il utilise un nuage de point sous forme de matrice, ou encore, pour effectuer une boucle itérative, il prend les indices dans une matrice ligne ou colonne.
La syntaxe propre aux matrices va donc se retrouver dans de nombreux endroits.
Voir aussi
modifier- Dans Wikipédia
Notes
modifier- ↑ la documentation utilise le terme de « primitive » ; il y a une ambiguité en français que nous avons décidé de lever dans le présent ouvrage en changeant le terme (en anglais, le problème ne se pose pas puisque la primitive d'une fonction est appelée « antiderivative »)
- ↑ dans la représentation des nombres à virgule flottante IEEE 754, un NaN est un nombre dont l'exposant ne contient que des 1 et la mantisse n'est pas nulle