Main Content

La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.

Puissances et exponentielles

Ce thème montre comment calculer des puissances et des exponentielles de matrices à l’aide de diverses méthodes.

Puissances d’entiers positifs

Si A est une matrice carrée et p un entier positif, alors A^p multiplie A par elle-même p-1 fois. Par exemple :

A = [1 1 1
     1 2 3
     1 3 6];
A^2
ans = 3×3

     3     6    10
     6    14    25
    10    25    46

Puissances inverses et fractionnelles

Si A est carrée et non singulière, alors A^(-p) multiplie inv(A) par elle-même p-1 fois.

A^(-3)
ans = 3×3

  145.0000 -207.0000   81.0000
 -207.0000  298.0000 -117.0000
   81.0000 -117.0000   46.0000

MATLAB® calcule inv(A) et A^(-1) avec le même algorithme, de sorte que les résultats sont exactement les mêmes. inv(A) et A^(-1) génèrent toutes deux des avertissements si la matrice est proche d’être singulière.

isequal(inv(A),A^(-1))
ans = logical
   1

Les puissances fractionnelles, telles que A^(2/3), sont également permises. Les résultats obtenus avec des puissances fractionnelles dépendent de la distribution des valeurs propres de la matrice.

A^(2/3)
ans = 3×3

    0.8901    0.5882    0.3684
    0.5882    1.2035    1.3799
    0.3684    1.3799    3.1167

Puissances élément par élément

L’opérateur .^ calcule les puissances élément par élément. Par exemple, pour élever au carré chaque élément d’une matrice, vous pouvez utiliser A.^2.

A.^2
ans = 3×3

     1     1     1
     1     4     9
     1     9    36

Racines carrées

La fonction sqrt est une manière pratique de calculer la racine carrée de chaque élément d’une matrice. Une autre manière consiste à utiliser A.^(1/2).

sqrt(A)
ans = 3×3

    1.0000    1.0000    1.0000
    1.0000    1.4142    1.7321
    1.0000    1.7321    2.4495

Pour d’autres racines, vous pouvez utiliser nthroot. Par exemple, calculez A.^(1/3).

nthroot(A,3)
ans = 3×3

    1.0000    1.0000    1.0000
    1.0000    1.2599    1.4422
    1.0000    1.4422    1.8171

Ces racines éléments par éléments diffèrent de la racine carrée matricielle, qui calcule une seconde matrice B telle que A=BB. La fonction sqrtm(A) calcule A^(1/2) à l’aide d’un algorithme plus précis. Le m de sqrtm distingue cette fonction de sqrt(A), qui, comme A.^(1/2), procède élément par élément.

B = sqrtm(A)
B = 3×3

    0.8775    0.4387    0.1937
    0.4387    1.0099    0.8874
    0.1937    0.8874    2.2749

B^2
ans = 3×3

    1.0000    1.0000    1.0000
    1.0000    2.0000    3.0000
    1.0000    3.0000    6.0000

Bases scalaires

En plus d’élever une matrice à une puissance, vous pouvez également élever un scalaire à la puissance d’une matrice.

2^A
ans = 3×3

   10.4630   21.6602   38.5862
   21.6602   53.2807   94.6010
   38.5862   94.6010  173.7734

Lorsque vous élevez un scalaire à la puissance d’une matrice, MATLAB utilise les valeurs propres et les vecteurs propres d’une matrice pour calculer la puissance de la matrice. Si [V,D] = eig(A), alors 2A=V 2D V-1.

[V,D] = eig(A);
V*2^D*V^(-1)
ans = 3×3

   10.4630   21.6602   38.5862
   21.6602   53.2807   94.6010
   38.5862   94.6010  173.7734

Exponentielles de matrices

L’exponentielle de matrice est un cas particulier d’élévation d’un scalaire à une puissance de matrice. La base d’une exponentielle de matrice est le nombre d’Euler e = exp(1).

e = exp(1);
e^A
ans = 3×3
103 ×

    0.1008    0.2407    0.4368
    0.2407    0.5867    1.0654
    0.4368    1.0654    1.9418

La fonction expm est une manière plus pratique de calculer les exponentielles d’une matrice.

expm(A)
ans = 3×3
103 ×

    0.1008    0.2407    0.4368
    0.2407    0.5867    1.0654
    0.4368    1.0654    1.9418

L’exponentielle de la matrice peut être calculée de plusieurs manières. Consultez Matrix Exponentials pour plus d’informations.

Traitement des petits nombres

Les fonctions MATLAB log1p et expm1 calculent log(1+x) et ex-1 de manière précise pour de très petites valeurs de x. Par exemple, si vous essayez d’additionner un nombre inférieur à la précision de la machine à 1, le résultat est arrondi à 1.

log(1+eps/2)
ans = 0

Cependant, log1p peut renvoyer une réponse plus précise.

log1p(eps/2)
ans = 1.1102e-16

De même pour ex-1, si x est très petit, il est arrondi à zéro.

exp(eps/2)-1
ans = 0

Là encore, expm1 est capable de renvoyer une réponse plus précise.

expm1(eps/2)
ans = 1.1102e-16

Voir aussi

| | | | | | |

Sujets associés