Universidade do Estado do Rio de Janeiro
Instituto de Química
Prof André Luís Alberton
Índice

Sistemas lineares - Descrição e análise (com rotinas em Scilab)¶

Seja um sistema linear conforme representado abaixo:

$$ \mathbf{A} \cdot \overrightarrow{x} = \overrightarrow{y} $$

Ou em sua forma aberta matricialmente:

$$ \left( \begin{matrix} a_{1,1} & a_{1,2} & ... & a_{1,m} \\ a_{2,1} & a_{2,2} & ... & a_{2,m} \\ ... & ... & ... & ... \\ a_{n,1} & a_{n,2} & ... & a_{n,m} \end{matrix} \right) \cdot \left( \begin{matrix} x_1 \\ x_2 \\ ... \\ x_m \end{matrix} \right) = \left( \begin{matrix} y_1 \\ y_2 \\ ... \\ y_n \end{matrix} \right) $$

Ou alternativamente representado como:

$$ \underbrace{ \left( \begin{matrix} a_{1,1} \\ a_{2,1} \\ ... \\ a_{n,1} \end{matrix} \right) }_{ \overrightarrow{a}_1^C } \cdot x_1 + \underbrace{ \left( \begin{matrix} a_{1,2} \\ a_{2,2} \\ ... \\ a_{n,2} \end{matrix} \right) }_{ \overrightarrow{a}_2^C } \cdot x_2 + ... + \underbrace{ \left( \begin{matrix} a_{1,m} \\ a_{2,m} \\ ... \\ a_{n,m} \end{matrix} \right) }_{ \overrightarrow{a}_m^C } \cdot x_m = \underbrace{ \left( \begin{matrix} y_1 \\ y_2 \\ ... \\ y_n \end{matrix} \right) }_{ \overrightarrow{y} } $$

Ou seja:

$$ \overrightarrow{a}_1^C \cdot x_1 + \overrightarrow{a}_2^C \cdot x_2 + ... + \overrightarrow{a}_m^C \cdot x_m = \overrightarrow{y} $$

Logo, da expressão acima, fica evidente que o vetor $ \overrightarrow{y} $ é combinação linear dos vetores coluna da matriz $ \mathbf{A} $. Em termos matemáticos, o conjunto de todos os vetores que resultam da combinação linear dos vetores coluna da matriz é chamado de espaço vetorial coluna dos vetores coluna da matriz, também designado span. A base de um espaço vetorial é definida como um conjunto de vetores LI que formam tal espaço. A dimensão de um espaço vetorial é igual oa número de vetores LI que o definem, ou seja:

$$ \rm{ Uma \ base \ de \ um \ espaço \ vetorial \ é \ formada \ por \ vetores \ LI \ que definem \ tal \ espaço } $$$$ \rm{ A \ dimensão \ de \ um \ espaço \ vetorial \ é \ igual \ ao \ número \ de \ vetores \ LI \ que definem \ tal \ espaço } $$

Vamos também relembrar o posto de uma matriz. Temos que:

$$ \rm{nº \ de \ colunas \ LI \ da \ matriz} \ \mathbf{A} = \rm{nº \ de \ linhas \ LI \ da \ matriz} \ \mathbf{A} = \rm{posto \ da \ matriz} \ \mathbf{A} = p $$

Isto significa que o número de linhas e colunas LI da matriz $\mathbf{A}$ é o mesmo, definindo espaços vetoriais $ \mathbf{R}^p $, de dimensão $ p $. O valor de $ p $ é obrigatoriamente menor ou igual à menor dimensão da matriz, ou seja:

$$ n = \rm{nº \ de \ linhas \ da \ matriz } $$$$ m = \rm{nº \ de \ colunas \ da \ matriz } $$$$ p \leq menor \left( n,m \right) $$

A primeira análise dos sistemas lineares do tipo envolve a natureza do problema, como:

  • com solução única => resolva
  • com infinitas soluções => analise
  • sem solução => se for o caso, encontre a solução mais próxima

Solução única

O problema terá solução única se:

  • o posto da matriz $ \mathbf{A} $ for igual ao número de colunas dela, i.e: $ p = m $ (ou seja, não há colunas linearmente dependente na matriz $ \mathbf{A} $), e
  • o vetor $ \overrightarrow{y} $ pertencer ao espaço vetorial formado pelos vetores coluna da matriz $ \mathbf{A} $. Esta condição é garantida se o posto da matriz estendida $ \left[ \mathbf{A}, \overrightarrow{y} \right] $ for igual ao posto da matriz $ \mathbf{A} $, ou seja: $ posto \left( \left[ \mathbf{A}, \overrightarrow{y} \right] \right) = posto \left( \mathbf{A} \right) $

Infinitas soluções

O problema terá infinitas soluções se:

  • o posto da matriz $ \mathbf{A} $ for menor que número de colunas dela, i.e: $ p < m $ (ou seja, HÁ colunas linearmente dependente na matriz $ \mathbf{A} $), e
  • o vetor $ \overrightarrow{y} $ pertencer ao espaço vetorial formado pelos vetores coluna da matriz $ \mathbf{A} $. Esta condição é garantida se o posto da matriz estendida $ \left[ \mathbf{A}, \overrightarrow{y} \right] $ for igual ao posto da matriz $ \mathbf{A} $, ou seja: $ posto \left( \left[ \mathbf{A}, \overrightarrow{y} \right] \right) = posto \left( \mathbf{A} \right) $

Sem solução

O problema naõ terá solução se:

  • o vetor $ \overrightarrow{y} $ NÃO pertencer ao espaço vetorial formado pelos vetores coluna da matriz $ \mathbf{A} $. Esta condição é garantida se o posto da matriz estendida $ \left[ \mathbf{A}, \overrightarrow{y} \right] $ for igual ao posto da matriz $ \mathbf{A} $, ou seja: $ posto \left( \left[ \mathbf{A}, \overrightarrow{y} \right] \right) > posto \left( \mathbf{A} \right) $

A figura a seguir ilustra a análise do sistema linear:

AnaliseSistLinear

Figura - Análise do sistema linear $

No Scilab, esta análise pode ser feita conforme código a seguir:

// Entradas: matriz A; vetor y
// Saídas: info (0 se solução única, 1 se infinitas soluções, 2 se sem solução); msg - mensagem quanto a característica da solução
function [info,msg] = analise(A,y)
    if rank(A) == rank([A,y]) then
        ncol = size(A,2)
        if rank(A)==ncol then
            info = 0
            msg = "solucao unica"
        else
            info = 1
            msg = "infinitas solucoes"
        end
    else
        info = 3
        msg = "sem solucao"
    end
endfunction                    

A = [  0.25   5.06   6.21   5.31
       5.17   4.23   3.45   9.4 
       3.91   2.89   7.06   6.8 
       2.41   0.88   5.21   3.29 ]

y = [   7.22;    8.97;    2.42;    4.33]

[info,msg] = analise(A,y)

Funções internas do Scilab¶

Para o seguinte sistema linear

$$ \mathbf{A} \cdot \overrightarrow{x} = \overrightarrow{y} $$

Dentre as linhas de comando do Scilab que podem ser úteis, inclui-se:

Solução única Infinitas soluções Sem solução
linsolve(A,-y) retorna a solução única retorna solução de menor norma retorna vazio, $[]$
pinv(A) * y retorna a solução única retorna solução de menor norma retorna solução mais próxima
(projeção de $ \overrightarrow{y} $ sobre o
espaço vetorial coluna de $ \mathbf{A}$)
rref($[A,y]$) conterá na última
coluna a solução
permite obter as colunas
LD e montar todas as soluções
pouco útil, retornará na
última coluna uma parte da matriz identidade

Outro comando que pode ser usado é o inv(A) * y, porém, ele só funcionará se existir a inversa da matriz $ \mathbf{A} $, o que obrigatoriamente só ocorre se a matriz for quadrada e tiver posto cheio ($ p= m = n $).

Exemplos¶

Exemplo 1 - Solução única¶

Resolva o seguinte sistema linear:

$$ \begin{pmatrix}1&-1&3\cr 2&1&0\cr -4&3&-1\cr \end{pmatrix} \cdot \begin{pmatrix} x_1 \cr x_2 \cr x_3 \end{pmatrix} = \begin{pmatrix}0\cr -2\cr 5\cr \end{pmatrix} $$

Este problema tem solução única. O posto da matriz $ \mathbf{A} =3 $, a matriz é quadrada de 3x3. A solução pode ser obtida mediante diferentes comandos, como segue:

A = [1 -1 3; 2 1 0; -4 3 -1]
y = [0;-2;5]

// Por inversa de A
x = inv(A)*b

// Por linsolve
x = linsolve(A,-y)

// Por pseudo-inversa
x = pinv(A)*y

// Por escalonamento reduzido
rref([A,y])

Os resultados estão apresentados para a inversa de A e para o escalonamento a seguir:

$$ \overrightarrow{x} = \begin{pmatrix}-1.1481481\cr 0.2962963\cr 0.4814815\cr \end{pmatrix} $$

Ou pelo escalonamento reduzido

$$ \begin{pmatrix}1&0&0&-1.1481481\cr 0&1&0&0.2962963\cr 0&0&1&0.4814815\cr \end{pmatrix} $$

Observe que, pelo escalonamento reduzido, a útlima coluna é igual a solução obtida pela inversa da matriz $ \mathbf{A} $ multiplicada pelo vetor $ \overrightarrow{y} $.

Exemplo 2 - Infinitas soluções¶

Considere o seguinte sistema linear:

$$ \begin{pmatrix}1&0&0.5&-5&-5.1\cr 3&2&2.3&2&1.7\cr 4&-1&1.6&3&2.6\cr -1&5&1.5&1&1.1\cr \end{pmatrix} \cdot \begin{pmatrix} x_1 \cr x_2 \cr x_3 \cr x_4 \cr x_5 \end{pmatrix} = \begin{pmatrix}-2.2\cr 2.7\cr 2.3\cr 2.2\cr \end{pmatrix} $$

Que foi criado a partir do seguinte código:

ac1 = [1;3;4;-1]
ac2 = [0;2;-1;5]
ac3 = .5*ac1 + .4*ac2;
ac4 = [-5; 2; 3; 1]
ac5 = ac4 - .1*ac1;

A = [ac1, ac2, ac3, ac4, ac5]
y = 0.3*ac1 + .4*ac2 + .5*ac4

Este exemplo foi criado para ter infinitas soluções. Neste exemplo, trata-se de uma matriz $ \mathbf{A} $ com 4 linhas e 5 colunas, ou seja, $ n=4, \ m=5 $. Neste exemplo, as colunas 3 e 5 foram criadas de forma a gerar dependência com colunas anteriores. O vetor $ y $ foi criado como combinação linear das colunas 1, 2, e 4.

Podemos analisar o sistema com o comando rrefaplicado sobre a matriz estendida.

M = [A,y]
Mred = rref(M)

O resultado está apresentado a seguir:

$$ \mathbf{M_{red}} = \begin{pmatrix} \color{red}{1} &0&0.5&0&-0.1&0.3\cr 0& \color{red}{1} &0.4&0&0&0.4\cr 0&0&0&\color{red}{1}&1&0.5\cr 0&0&0&0&0&0\cr \end{pmatrix} $$

Observe que as colunas que forma ajustadas como a matriz identidade foram as colunas $1, \ 2, \ 4$. As colunas $ 3, \ 5 $ da matriz são LD, assim como a coluna $ 6 $, referente ao termo do lado direito da equação. Além disto, a última linha não carrega nenhuma informação. Ou seja, o sistema linear pode ser reescrito como:

$$\begin{pmatrix}1&0&0\cr 0&1&0\cr 0&0&1\cr \end{pmatrix} \cdot \begin{pmatrix} x_1 \cr x_2 \cr x_4 \end{pmatrix} + \begin{pmatrix}0.5&-0.1\cr 0.4&0\cr 0&1\cr \end{pmatrix} \cdot \begin{pmatrix} x_3 \cr x_5 \end{pmatrix} = \begin{pmatrix}0.3\cr 0.4\cr 0.5\cr \end{pmatrix} $$

Ou então:

$$\begin{pmatrix}1&0&0\cr 0&1&0\cr 0&0&1 \end{pmatrix} \cdot \begin{pmatrix} x_1 \cr x_2 \cr x_4 \end{pmatrix} = \begin{pmatrix}0.3\cr 0.4\cr 0.5 \end{pmatrix} -\begin{pmatrix}0.5&-0.1\cr 0.4&0\cr 0&1 \end{pmatrix} \cdot \begin{pmatrix} x_3 \cr x_5 \end{pmatrix} $$

A matriz identidade é o "1" da matemática vetorial; logo, pode ser omitida em uma multiplicação. Na forma escrita do sistema, as variáveis $ x_1, x_2, x_4 $ são chamadas de variáveis básicas e as variáveis $ x_3,x_5 $ são chamadas variáveis livres ou variáveis não-básicas.

$$ \underbrace{ \begin{pmatrix} x_1 \cr x_2 \cr x_4 \end{pmatrix} }_{\rm{variáveis \ básicas} } = \begin{pmatrix}0.3\cr 0.4\cr 0.5 \end{pmatrix} -\begin{pmatrix}0.5&-0.1\cr 0.4&0\cr 0&1 \end{pmatrix} \cdot \underbrace{ \begin{pmatrix} x_3 \cr x_5 \end{pmatrix} }_{\rm{variáveis \ livres}} $$

Ali estão todas as soluções do problema. Podemos assumir valores quaisquer de $ x_3,x_5 $ e calcular $ x_1, x_2, x_4 $.

Vale ressaltar que:

A escolha de variáveis básicas e livres não é única

Isto quer dizer que podemos trocar variáveis básicas e livres. Se a ordem das colunas fôssem diferentes, as variáveis básicas e livres seriam diferentes (por exemplo, poderíamos trocar $ x_2,x_3 $ dentre as variáveis básicas e livres neste exemplo).

Vale ressaltar os comandos pinv e linsolve neste exemplo. Tais comandos podem ser usados na forma:

x = pinv(A)*y

x = linsolve(A,-y)

Ambos retornam o seguinte resultado:

$$ \overrightarrow{x} = \begin{pmatrix}0.2097754\cr 0.3086594\cr 0.2283515\cr 0.2604888\cr 0.2395112\cr \end{pmatrix} $$

Tal resultado é o resultado de menor norma possível para o vetor $ \overrightarrow{x}$ (lembrem-se que há infinitos resultados possíveis). O resultado de de menor norma possível pode ser de interesse ou não (geralmente não é, apenas em problemas específicos, importantes, mas específicos).

Exemplo 3 - Sistema sem solução¶

Considere o seguinte sistema linear:

$$ \begin{pmatrix}1&0&0.5&-5&-5.1\cr 3&2&2.3&2&1.7\cr 4&-1&1.6&3&2.6\cr -1&5&1.5&1&1.1\cr \end{pmatrix} \cdot \begin{pmatrix} x_1 \cr x_2 \cr x_3 \cr x_4 \cr x_5 \end{pmatrix} = \begin{pmatrix}-2.2\cr 2.7\cr 2.3\cr 2.6\cr \end{pmatrix} $$

Este é um sistema similar ao anterior; porém, contudo, sem solução.

Podemos usar o escalonamento reduzido (rref) para análise, conforme segue:

A = [ 1.   0.   0.5  -5.  -5.1
   3.   2.   2.3   2.   1.7
   4.  -1.   1.6   3.   2.6
  -1.   5.   1.5   1.   1.1 ]
y =  [-2.2  ; 2.7 ;  2.3 ;  2.6 ]
M = [A,y]
Mred = rref(M)

O resultado está apresentado a seguir:

$$ \mathbf{M_{red}} = \begin{pmatrix}\color{red}{1}&0&0.5&0&-0.1&0\cr 0&\color{red}{1}&0.4&0&0&0\cr 0&0&0&\color{red}{1}&1&0\cr 0&0&0&0&0&\color{red}{1}\cr \end{pmatrix} $$

Observe o resultado retorna como independentes as colunas $ 1 ,2, 4 ,6 $; porém, a coluna $ 6 $ é a coluna do termo independente; ou seja, o vetor $ \overrightarrow{y} $ não é formado pela combinação linear dos vetores colunas da matriz $ \mathbf{A} $; logo, o problema não tem solução.

O que podemos fazer nesta situação? Depende:

  • se esperávamos que o problema tivesse solução, há algo errado.
  • porém, há casos em que o problema é esperado não ter solução; como o caso da estimação de parâmetros no ajuste de modelos.

Se for este útimo caso, podemos encontrar a "solução mais próxima", com o uso da pseudo-inversa (comando pinv).

x_hat = pinv(A)*y

Este comando retorna o resultado:

$$ \hat{\overrightarrow{x}} = \begin{pmatrix}0.1934056\cr 0.3676759\cr 0.2437732\cr 0.2611518\cr 0.2418112\cr \end{pmatrix} $$

O valor de $ \hat{\overrightarrow{y}} $ calculado a partir de $ \hat{\overrightarrow{x}} $ fica então:

$$ \hat{\overrightarrow{y}} = \mathbf{A} \cdot \hat{\overrightarrow{x}} = \begin{pmatrix}-2.2237037\cr 2.8096296\cr 2.2081481\cr 2.5377778\cr \end{pmatrix} $$

Este resultado de $ \hat{\overrightarrow{y}} $ representa a projeção ortogonal do vetor $ \overrightarrow{y} $ sobre o hiper-plano (espaço vetorial) formado pelos vetores coluna da matriz $ \mathbf{A} $.

Observe que o resíduo, a diferença entre o vetor $ \overrightarrow{y} - \hat{\overrightarrow{y}} $ é igual a:

$$ \hat{\overrightarrow{y}} - \overrightarrow{y} = \begin{pmatrix}-2.2237037\cr 2.8096296\cr 2.2081481\cr 2.5377778\cr \end{pmatrix} - \begin{pmatrix}-2.2\cr 2.7\cr 2.3\cr 2.6\cr \end{pmatrix} = {\begin{pmatrix}-0.0237037\cr 0.1096296\cr -0.0918519\cr -0.0622222\cr \end{pmatrix}} $$