¿Cómo elevar una array cuadrada a una media potencia negativa en R?

La operación de potencia singular se puede realizar en arrays cuadradas, donde la potencia especificada se aplica a cada elemento de la array. Base R tiene muchos métodos y rutinas para calcular la potencia para cualquier k > 1, donde k es el valor entero. Sin embargo, elevar arrays a una potencia no integral es un desafío y hay un número limitado de soluciones disponibles. Se pueden invocar paquetes externos para realizar cálculos de potencia de una manera más confiable en el lenguaje de programación R.

Método 1: Usando el método sqrtm

El paquete expm en R se usa para calcular potencias exponenciales, potencias logarítmicas y raíces cuadradas de arrays en R. El paquete debe instalarse primero en el espacio de trabajo mediante la siguiente ejecución de comando: 

install.packages("expm")

El paquete tiene el método sqrtm() que se usa para el cálculo de la raíz cuadrada de las arrays cuadradas en R. 

sqrtm (mat)

A esto le sigue la aplicación del método solve() en R que, en general, resuelve la ecuación a %*% x = b para x, donde b puede ser un vector o una array o un valor de número real <0. Este método está disponible en la propia base R. 

solve( mat , power)

En caso de que la potencia esté vacía, se calcula la inversa de la array mat, es decir, la array se eleva a la potencia de -1. Por lo tanto, para resumir, calculamos la mitad de la potencia usando el método sqrtm() y la negamos usando el método solve() 

Código:

R

# loading the required libraries
library ("expm")
  
# declaring a data frame in R
mat <- matrix(1 : 9, ncol = 3)
print ("Original Matrix")
print (mat)
print ("Power matrix")
  
# computing -0.5 power of matrix
pow <- solve(sqrtm(mat))
print (pow)

Producción:

[1] "Original Matrix" 
     [,1] [,2] [,3] 
[1,]    1    4    7 
[2,]    2    5    8 
[3,]    3    6    9 
[1] "Power Matrix" 
          [,1]        [,2]        [,3]
[1,] 0- 6980476i 0+13960950i 0- 6980475i 
[2,] 0+13960950i 0-27921901i 0+13960951i 
[3,] 0- 6980475i 0+13960951i 0- 6980475i

Método 2: Usar el enfoque de vectores propios

El operador ^%^ se puede utilizar para calcular la operación de potencia de la array, donde se realiza la descomposición del valor propio para la array especificada. Sus vectores correspondientes, así como sus valores, se obtienen en forma de arrays. La transposición de los vectores junto con el vector de valores se usa para devolver el valor de la función personalizada para calcular la potencia de la array. Sin embargo, este método se considera inadecuado para el trabajo de arrays cuadradas aleatorias, ya que está guiado por muchas restricciones, algunas de las cuales son: 

  • Este método no funciona para una array que no tiene descomposición de valores propios.
  • Este método no funciona para una array que no está diagonalizada.
  • La array debe ser preferiblemente simétrica.

Código: 

R

# creating data for matrix
vec <- c(0.088150041, 0.001017491 , 
         0.001017491, 0.084634294)
  
# declaring matrix
mat <- matrix(vec , nrow = 2)
print ("Original Matrix")
print (mat)
  
"%^%" <- function(mat, power) 
  with(eigen(mat), vectors %*% (values^power * t(vectors))) 
  
power <- -0.5
  
# raising matrix to -0.5 power
pow <- mat%^%(power)
print ("Modified Matrix")
print (pow)

Producción:

[1] "Original Matrix" 
        [,1]     [,2] 
[1,] 0.088150 0.001017 
[2,] 0.001017 0.084634 
[1] "Modified Matrix" 
[,1]     [,2] 
[1,]  3.36830 -0.02004 
[2,] -0.02004  3.43755

Publicación traducida automáticamente

Artículo escrito por mallikagupta90 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *