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