Chapitre 8. Math´ ematiques de base
351
hermitienne (c’est-` a-dire ou bien une matrice complexe ´ egale ` a sa transconjugu´ ee, ou bien une matrice r´ eelle sym´ etrique), on peut calculer C
1/2 de la fa¸ con
suivante :
> e <- eigen(C,symmetric=TRUE)
> V <- e$vectors
> V % * % diag(sqrt(e$values)) % * % t(Conj(V)) # C
1/2 ,
# qui est ici
# hermitienne.
[,1]
[,2]
[1,] 0.9238795+0.0000000i 0.000000-0.3826834i
[2,] 0.0000000+0.3826834i 1.689246+0.0000000i
La matrice C
−1/2 peut se calculer ainsi :
> V % * % diag(1/sqrt(e$values)) % * % t(Conj(V)) # C
−1/2 ,
# qui est ici
# hermitienne.
[,1]
[,2]
[1,] 1.194478+0.0000000i 0.0000000+0.2705981i
[2,] 0.000000-0.2705981i 0.6532815+0.0000000i
8.2.10 D´ ecomposition en valeurs singuli` eres
On cherche ` a ´ ecrire C = UDV
∗ o` u D est la matrice diagonale des valeurs
singuli` eres de C, U (respectivement V) est la matrice des vecteurs singuliers
` a gauche (respectivement ` a droite) de C. Pour cela, il faut utiliser la fonction
svd().
> res <- svd(C)
> res
$d
[1] 3.4142136 0.5857864
$u
[,1]
[,2]
[1,] -0.3826834+0.0000000i 0.9238795+0.0000000i
[2,] 0.0000000-0.9238795i 0.0000000-0.3826834i
$v
[,1]
[,2]
[1,] -0.3826834+0.0000000i 0.9238795+0.0000000i
[2,] 0.0000000-0.9238795i 0.0000000-0.3826834i
> D <- diag(res$d)
> U <- res$u
> V <- res$v
> all.equal(C,U% * %D% * %t(Conj(V))) # A = UDV
∗ .
[1] TRUE
Précédent

- 383/701

Suivant