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:
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:
Solução única
O problema terá solução única se:
Infinitas soluções
O problema terá infinitas soluções se:
Sem solução
O problema naõ terá solução se:
A figura a seguir ilustra a 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)
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 $).
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} $.
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 rref
aplicado 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).
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 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}} $$