Universidade Federal da Paraíba
Programa de Pós-Graduação em Economia
#-------------------------------------------------------
# Hilton M B Ramalho - PPGE/UFPB
# Função para resolução de sistemas lineares
# n equações e n variáveis
# Método - inversão de matrizes
#-------------------------------------------------------
rsistema <- function(A,x=NULL) {
# total de colunas
n <- ncol(A)
d <- dim(A[,-n])
if(d[1]!=d[2]) stop("A matriz dos coeficientes ponderados precisa ser quadrada!")
# solução x = A-1*b
xs <- round(solve(A[,-n])%*%A[,n])
if(!is.null(x)) {
# aplicar nomes
rownames(xs) <- x
colnames(xs) <- "solução"
}
return(xs)
}
# Exemplo 2
# Considere o sistema Ax = b -> n equações e n variáveis
# x1 + 2x2 - 2x3 = 1
# -2x1 + x2 - x3 = 0
# 3x1 - x2 + 2x3 = 1
# Entrar com colunas da matriz dos coeficientes do sistema
c1 <- c(1,2,-2)
c2 <- c(-2,1,-1)
c3 <- c(3,-1,2)
# Entrar com matriz dos coeficientes independentes
b <- c(1,0,1)
# criar matriz dos coeficientes
A <- matrix(nrow=3,ncol=3,data = cbind(c1,c2,c3))
A
## [,1] [,2] [,3]
## [1,] 1 -2 3
## [2,] 2 1 -1
## [3,] -2 -1 2
# calcular determinante
det(A)
## [1] 5
# calcular matriz inversa
solve(A)
## [,1] [,2] [,3]
## [1,] 0.2 0.2 -0.2
## [2,] -0.4 1.6 1.4
## [3,] 0.0 1.0 1.0
# resolver diretamente
solve(A,b)
## [1] 0 1 1
# Usando a função rsistema
# Definir matriz de variáveis do sistema
x <- c("x1","x2","x3")
# Definir matriz ampliada do sistema
C <- cbind(A,b)
# resolver sistema por inversão de matriz
rsistema(C,x)
## solução
## x1 0
## x2 1
## x3 1