1 Sistema de equações lineares

Um dos pacotes para a solução de sistemas de equações lineares é o matlib, que é bastante útil para o estudo de Álgebra Linear e estatísticas multivariadas. O pacote precisa ser instalado antes do primeiro uso. Após, basta carregar com a função library()2.

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

O objetivo desta nota é apresentar, por meio de exemplos baseados no livro de Boldrini et al. (1980), algumas das funcionalidades do pacote. Um possível sistema com duas equações é dado por:

A <- matrix(c(2,-7,1,4,−1,-10,-5,16), nrow= 4, ncol = 2)
b <- matrix(c(3,-12,1,8),ncol = 1)

showEqn(A,b) # Mostra a estrutura do sistema de equações
##  2*x1  - 1*x2  =    3 
## -7*x1 - 10*x2  =  -12 
##  1*x1  - 5*x2  =    1 
##  4*x1 + 16*x2  =    8
plotEqn(A,b) # Desenha as retas num gráfico com duas variáveis
##  2*x[1]  - 1*x[2]  =    3 
## -7*x[1] - 10*x[2]  =  -12 
##    x[1]  - 5*x[2]  =    1 
##  4*x[1] + 16*x[2]  =    8
Elaboração própria.

Figure 1.1: Elaboração própria.

A partir da Figura 1.1, pode-se perceber que há duas equações que são combinações lineares das demais.

Também é possível elaborar um sistema com três variáveis, resolver e fazer sua representação gráfica3:

A <- matrix(c(1,2,1,4,5,-3,3,4,-2), ncol = 3)
b <- c(1,4,5)

showEqn(A,b) # Mostra a estrutura do sistema de equações
## 1*x1 + 4*x2 + 3*x3  =  1 
## 2*x1 + 5*x2 + 4*x3  =  4 
## 1*x1 - 3*x2 - 2*x3  =  5
ampliada <- cbind(A,b)                      # Matriz ampliada do sistema
echelon(ampliada,verbose = T,fractions = T) # Resolve por eliminação gaussiana
## 
## Initial matrix:
##               b 
## [1,]  1  4  3  1
## [2,]  2  5  4  4
## [3,]  1 -3 -2  5
## 
## row: 1 
## 
##  exchange rows 1 and 2 
##               b 
## [1,]  2  5  4  4
## [2,]  1  4  3  1
## [3,]  1 -3 -2  5
## 
##  multiply row 1 by 1/2 
##                  b  
## [1,]   1 5/2   2   2
## [2,]   1   4   3   1
## [3,]   1  -3  -2   5
## 
##  subtract row 1 from row 2 
##                  b  
## [1,]   1 5/2   2   2
## [2,]   0 3/2   1  -1
## [3,]   1  -3  -2   5
## 
##  subtract row 1 from row 3 
##                        b    
## [1,]     1   5/2     2     2
## [2,]     0   3/2     1    -1
## [3,]     0 -11/2    -4     3
## 
## row: 2 
## 
##  exchange rows 2 and 3 
##                        b    
## [1,]     1   5/2     2     2
## [2,]     0 -11/2    -4     3
## [3,]     0   3/2     1    -1
## 
##  multiply row 2 by -2/11 
##                        b    
## [1,]     1   5/2     2     2
## [2,]     0     1  8/11 -6/11
## [3,]     0   3/2     1    -1
## 
##  multiply row 2 by 5/2 and subtract from row 1 
##                        b    
## [1,]     1     0  2/11 37/11
## [2,]     0     1  8/11 -6/11
## [3,]     0   3/2     1    -1
## 
##  multiply row 2 by 3/2 and subtract from row 3 
##                        b    
## [1,]     1     0  2/11 37/11
## [2,]     0     1  8/11 -6/11
## [3,]     0     0 -1/11 -2/11
## 
## row: 3 
## 
##  multiply row 3 by -11 
##                        b    
## [1,]     1     0  2/11 37/11
## [2,]     0     1  8/11 -6/11
## [3,]     0     0     1     2
## 
##  multiply row 3 by 2/11 and subtract from row 1 
##                        b    
## [1,]     1     0     0     3
## [2,]     0     1  8/11 -6/11
## [3,]     0     0     1     2
## 
##  multiply row 3 by 8/11 and subtract from row 2 
##               b 
## [1,]  1  0  0  3
## [2,]  0  1  0 -2
## [3,]  0  0  1  2
plotEqn3d(A,b) # Desenha as retas num gráfico em três dimensões numa popup

Outra forma de resolver o sistema se dá com o comando solve, desde que o sistema seja possível e determinado:

A <- matrix(c(1,2,1,4,5,-3,3,4,-2), ncol = 3)
b <- c(1,4,5)

solve(A,b)
## [1]  3 -2  2

Este pequeno resumo pode ajudar na resolução de sistemas simples ligados à álgebra linear, auxiliando no aprendizado e na resolução de exercícios.

Referências

Boldrini, José Luiz, Sueli I. Rodrigues Costa, Vera Lúcia Figueiredo, and Henri G. Wetzler. 1980. Algebra Linear. 3a ed. São Paulo - BRA: Harper & Row do Bra.


  1. Doutorando em Economia pela Universidade de Brasília. Pode ser contatado em rafaeldeacyprestemr@gmail.com.

  2. Para acessar detalhes das funções do pacote, basta digitar ?nome da função. Na aba ajuda, aparecerão informações da função e, normalmente, algumas aplicações

  3. A representação gráfica é mostrada apenas em pop-up quando o código é rodado no R. O leitor pode copiar os códigos desta nota e rodar em sua própria máquina para verivicar o resultado.