Exercício computacional II: Sistemas lineares

Considere o seguinte sistema de equações lineares:
\begin{align*}
x + y – z &= -2\\
x -y +2z &= -1\\
2x – y – z &= 1
\end{align*}
Primeiro, definimos a matriz do sistema e o vetor dos valores no lado direito:

// a matriz do sistema
// observe que a matriz pode ser definida sem usar ";"
--> A = [1 1 -1 
   1 -1 2
   2 -1 -1 ]
 A  = 

   1.   1.  -1.
   1.  -1.   2.
   2.  -1.  -1.

// o vetor b
--> b = [ -2
   -1
   1]
 b  = 

  -2.
  -1.
   1.

Vamos resolver o sistema usando os três métodos estudados na disciplina. Começamos pela eliminação de Gauss-Jordan.


// primeiro, vamos criar uma cópia A0 de A. 
// Queremos usar A mais tarde
--> A0 = A
 A0  = 

   1.   1.  -1.
   1.  -1.   2.
   2.  -1.  -1.

// Adicionamos o vetor b à matriz A0 como 4a coluna
// observe o uso de ":"
--> A0(:,4) = b
 A0  = 

   1.   1.  -1.  -2.
   1.  -1.   2.  -1.
   2.  -1.  -1.   1.

// Usando a função rref (Row Reduced Echelon Form), 
computamos a forma escalondada de A0.
--> rref( A0 )
 ans  =

   1.   0.   0.  -1.
   0.   1.   0.  -2.
   0.   0.   1.  -1.
  

Os números que aparecem na última coluna representam a solução do sistema: $x=-1$, $y=-2$, $z=-1$.

Ora, vamos usar o método da matriz inversa.


// calculamos a inversa da matriz A
--> A^-1
 ans  =

   0.4285714285714285476381   0.2857142857142856984254   0.1428571428571429047238
   0.7142857142857141905523   0.1428571428571428492127  -0.4285714285714284921269
   0.1428571428571428492127   0.4285714285714285476381  -0.2857142857142856984254

// computamos o produto A^-1*b
--> A^-1*b
 ans  =

  -0.999999999999999888978
  -1.999999999999999555911
  -0.999999999999999888978

Note que as soluções que obtivemos são similares às soluções que foram dadas pelo método da eliminação de Gauss-Jordan, mas não são números inteiros. De novo, o problema é devido ao fato que o sistema Scilab usa aproximações para fazer as computações.

Finalmente, resolveremos o problema usando o Regra do Cramer.


// calculemos primeiro a matriz A1 que obtemos 
// de A por colocar b na primeira coluna
--> A1 = A; A1(:,1) = b
 A1  = 

  -2.   1.  -1.
  -1.  -1.   2.
   1.  -1.  -1.

// a matriz A2 que obtemos 
// de A por colocar b na segunda coluna
--> A2 = A; A2(:,2) = b
 A2  = 

   1.  -2.  -1.
   1.  -1.   2.
   2.   1.  -1.

// a matriz A3 que obtemos 
// de A por colocar b na terceira coluna
--> A3 = A; A3(:,3) = b
 A3  = 

   1.   1.  -2.
   1.  -1.  -1.
   2.  -1.   1.

// a solução será obtida por calcular os determinantes de 
// A1, A2, A3 e dividir pelo detarminante de A
--> [det(A1)/det(A); det(A2)/det(A); det(A3)/det(A)]
 ans  =

  -0.999999999999999888978  
  -2.  
  -0.999999999999999888978

Observem de novo que uma solução aproximada foi obtida.

Resolvem usando os três métodos no exemplo anterior o seguinte sistema de equações lineares:
\begin{align*}
4x_1 + x_2 + 2x_3+ 4 x_4 +2 x_5 + 2 x_6 & = -2\\
2x_1 + 2x_2 + 2x_3 + 3x_4 + 3x_5 + 4x_6 & = -1\\
4x_1 + 2x_2 + x_3 + 4x_4 + 2x_6 & = 1\\
x_1 + 2x_3 + 4x_4 + 3x_5 & = 0\\
4x_2 + 4x_4 & = 0\\
2x_1 + 3x_2 + 4x_3 + x_4 + 2x_5 + x_6 & = 2
\end{align*}
Para ajudar, coloquei aqui a matriz do sistema e o vetor $b$ para serem copiados e colados na janela do Scilab.

// matriz A
[ 4.   1.   2.   4.   2.   2. 
  2.   2.   2.   3.   3.   4. 
  4.   2.   1.   4.   0.   2. 
  1.   0.   2.   4.   3.   0. 
  0.   4.   0.   4.   0.   0. 
  2.   3.   4.   1.   2.   1. ]
 // vetor b
 [ -2; -1; 1; 0; 0; 2 ]