Potencia de una Matriz
David J. Santana
12 de octubre de 2016
Elevar una matriz a la n-ésima potencia.
### Supongamos la siguiente matriz
### cuadrada que queremos elevar a
### la n-ésima potencia.
### ##############################
###
### | 0 1/2 1/2 |
### P = | 1/2 1/2 0 |
### | 1/2 0 1/2 |
###
### Escribo las filas
f1=c(0,1/2,1/2)
f2=c(1/2, 1/2, 0)
f3=c(1/2,0, 1/2)
### Uno las filas en una matriz
P=rbind(f1,f2,f3) # P=cbind(f1,f2,f3) sería un error
P
## [,1] [,2] [,3]
## f1 0.0 0.5 0.5
## f2 0.5 0.5 0.0
## f3 0.5 0.0 0.5
### La multiplico por ella misma, por ejemplo, 3 veces
P_a_la_3=P%*%P%*%P
P_a_la_3 # P_a_la_3=P^3 sería un error
## [,1] [,2] [,3]
## f1 0.250 0.375 0.375
## f2 0.375 0.375 0.250
## f3 0.375 0.250 0.375
###
### La siguiente función eleva la matriz P a la n.
###
PowMat=function(P,n){
A=P
for(i in 1:(n-1)){
A <- A %*% P
}
A
}
### Ejemplo
PowMat(P,3)
## [,1] [,2] [,3]
## f1 0.250 0.375 0.375
## f2 0.375 0.375 0.250
## f3 0.375 0.250 0.375
### Comparamos
P_a_la_3
## [,1] [,2] [,3]
## f1 0.250 0.375 0.375
## f2 0.375 0.375 0.250
## f3 0.375 0.250 0.375
### Un último ejemplo
PowMat(P,5)
## [,1] [,2] [,3]
## f1 0.31250 0.34375 0.34375
## f2 0.34375 0.34375 0.31250
## f3 0.34375 0.31250 0.34375
PowMat(P,15)
## [,1] [,2] [,3]
## f1 0.3333130 0.3333435 0.3333435
## f2 0.3333435 0.3333435 0.3333130
## f3 0.3333435 0.3333130 0.3333435
PowMat(P,25)
## [,1] [,2] [,3]
## f1 0.3333333 0.3333333 0.3333333
## f2 0.3333333 0.3333333 0.3333333
## f3 0.3333333 0.3333333 0.3333333
PowMat(P,35)
## [,1] [,2] [,3]
## f1 0.3333333 0.3333333 0.3333333
## f2 0.3333333 0.3333333 0.3333333
## f3 0.3333333 0.3333333 0.3333333
### La matriz P es doblemente estocástica y debido a esto
### converge a la distribución uniforme.
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
No hay comentarios:
Publicar un comentario