352
Le logiciel R - Effectuer des analyses math´ ematiques
Astuce
Pour calculer l’inverse (g´ en´ eralis´ ee) de Moore-Penrose d’une matrice
(non inversible), on peut utiliser la fonction suivante :
> mpinv <- function(M,eps=1e-13) {
+ s <- svd(M)
+ e <- s$d
+ e[e>eps] <- 1/e[e>eps]
+ return(s$v% * %diag(e)% * %t(s$u))
+ }
8.2.11 D´ ecomposition de Cholesky
Pour une matrice r´ eelle sym´ etrique d´ efinie positive B, on cherche `
a ´ ecrire
B = U
T
U = LL
T , o` u U (respectivement L) est une matrice triangulaire
sup´ erieure (respectivement inf´ erieure). Vous aurez not´ e que cela implique que
U est une racine carr´ ee de B. Pour obtenir cette d´ ecomposition, il faut utiliser
la fonction chol().
> U <- chol(B) # C’est un autre moyen d’obtenir
# B
1/2 .
> L <- t(U)
> U
[,1]
[,2]
[1,]
1 2.000000
[2,]
0 1.732051
> all.equal(B,t(U)% * %U) # B = U
T U.
[1] TRUE
Notez ´ egalement que vous pouvez utiliser la fonction chol2inv() pour calculer l’inverse B
−1 d’une matrice carr´ ee sym´ etrique d´ efinie positive B, ` a partir
de sa d´ ecomposition de Cholesky.
> B
[,1] [,2]
[1,]
1
2
[2,]
2
7
> chol2inv(U)
# C’est B
−1 .
[,1]
[,2]
[1,] 2.3333333 -0.6666667
[2,] -0.6666667 0.3333333
> all.equal(chol2inv(U),solve(B))
[1] TRUE
Notez enfin que la fonction chol() peut ˆ etre utilis´ ee pour calculer B
−1/2 de
la fa¸ con suivante :
Le logiciel R - Effectuer des analyses math´ ematiques
Astuce
Pour calculer l’inverse (g´ en´ eralis´ ee) de Moore-Penrose d’une matrice
(non inversible), on peut utiliser la fonction suivante :
> mpinv <- function(M,eps=1e-13) {
+ s <- svd(M)
+ e <- s$d
+ e[e>eps] <- 1/e[e>eps]
+ return(s$v% * %diag(e)% * %t(s$u))
+ }
8.2.11 D´ ecomposition de Cholesky
Pour une matrice r´ eelle sym´ etrique d´ efinie positive B, on cherche `
a ´ ecrire
B = U
T
U = LL
T , o` u U (respectivement L) est une matrice triangulaire
sup´ erieure (respectivement inf´ erieure). Vous aurez not´ e que cela implique que
U est une racine carr´ ee de B. Pour obtenir cette d´ ecomposition, il faut utiliser
la fonction chol().
> U <- chol(B) # C’est un autre moyen d’obtenir
# B
1/2 .
> L <- t(U)
> U
[,1]
[,2]
[1,]
1 2.000000
[2,]
0 1.732051
> all.equal(B,t(U)% * %U) # B = U
T U.
[1] TRUE
Notez ´ egalement que vous pouvez utiliser la fonction chol2inv() pour calculer l’inverse B
−1 d’une matrice carr´ ee sym´ etrique d´ efinie positive B, ` a partir
de sa d´ ecomposition de Cholesky.
> B
[,1] [,2]
[1,]
1
2
[2,]
2
7
> chol2inv(U)
# C’est B
−1 .
[,1]
[,2]
[1,] 2.3333333 -0.6666667
[2,] -0.6666667 0.3333333
> all.equal(chol2inv(U),solve(B))
[1] TRUE
Notez enfin que la fonction chol() peut ˆ etre utilis´ ee pour calculer B
−1/2 de
la fa¸ con suivante :
