miércoles, 12 de octubre de 2016

19-Potencia de Matrices

Potencia de una Matriz

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