Inversa generalizada

Camilo Mendez Hilario -

Primera Forma usando ginv()

Para la primera forma usaremos la función ginv() de la libreria “MASS” para hallar la inversa generalizada Moore-Penrose de una matriz.

Consideremos las 3 siguientes ecuaciones lineales:

x1+x2=1 2x1-x2=5 3x1+4x2=2

Equivalentemente, se pueden escribir ecuaciones anteriores en forma de matriz como se muestra a continuación:

Ax=b

Representando matriz A

#install.packages(MASS) 
library(MASS)
# Matriz A
A = matrix(
  c(1, 2, 3, 1, -1, 4),
  nrow = 3,            
  ncol = 2,            
)
print(A)
##      [,1] [,2]
## [1,]    1    1
## [2,]    2   -1
## [3,]    3    4

Representando matriz b

#Matriz b
b = matrix(
  c(1, 5, 2),
  nrow = 3,            
  ncol = 1,            
)
print(b)
##      [,1]
## [1,]    1
## [2,]    5
## [3,]    2

Calculando x usando ginv()

#Solución de la ecuación lineal usando inversa generalizada:
x = ginv(A) %*% b
print(x)
##      [,1]
## [1,]    2
## [2,]   -1

Segunda forma usando pinv()

#install.packages("pracma") 
library(pracma)

Representando matriz A

# Matriz A
A = matrix(
  c(1, 2, 3, 1, -1, 4),
  nrow = 3,            
  ncol = 2,            
)
print(A)
##      [,1] [,2]
## [1,]    1    1
## [2,]    2   -1
## [3,]    3    4

Representando matriz b

#Matriz b
b = matrix(
  c(1, 5, 2),
  nrow = 3,            
  ncol = 1,            
)
print(b)
##      [,1]
## [1,]    1
## [2,]    5
## [3,]    2

Calculando x usando pinv()

x = pinv(A) %*% b
print(x)
##      [,1]
## [1,]    2
## [2,]   -1