sexta-feira, 23 de maio de 2014

Resolução de sistemas de equações não singulares



Nota prévia: uma matriz A (n x n) é não-singular se se verificarem as seguintes propriedades:
·        A tem uma inversa, designada por A-1;
·        O determinante de A (det(A)) é diferente de zero (det(A)¹0);
·        Para qualquer z¹ 0, A*z¹0.
2 Carlos
A resolução de sistemas de equações lineares (não singulares) é muito fácil com o Matlab. Vamos lidar com equações simples do tipo Ax=b em que A representa uma matriz dos coeficientes com dimensão m por n, x é o vector coluna das incógnitas e b é o vector correspondente aos termos independentes do sistema de equações.
Imaginemos que temos um sistema de 2 equações (cada uma com duas incógnitas e um termo independente):

7x+8y=100
2x-9y=10

Seguindo a forma clássica de resolução teríamos que separar as equações nos seus componentes (coeficientes, incógnitas e termos independentes) e fazer os cálculos através dos determinantes. Tarefa árdua!
Teríamos então que fazer o seguinte:

x = D1/D, em que D significa determinante;
y = D2/D
Assim, resolvendo os determinantes obtemos:

D = 7*(-9)-8*2=-79 (determinante dos coeficientes);
D1 = 100*(-9)-10*8=-980 (determinante dos termos independentes e do vector das “segundas” incógnitas (y));

D2 = 7*10-2*100=-130 (determinante dos termos independentes e do vector das “primeiras” incógnitas (x));

Calculando as respectivas razões obtemos as soluções para as duas incógnitas:
x = 12.4051
y = 1.6456
Com este procedimento facilmente se verifica a quantidade de cálculos que têm que ser feitos para chegar a uma solução (com o perigo de nos enganarmos nos sinais dos escalares). 

Com o Matlab tudo é mais simples pois só precisamos de decompor o sistema de equações e usar uma única instrução (\ - “backslash”). 

O sistema de equações usado como exemplo é do tipo Ax=b em que A representa a matriz dos coeficientes com dimensão n por n, x é o vector coluna das incógnitas (x e y) e b é o vector correspondente aos termos independentes (100 e 10).
Sendo do tipo Ax=b a instrução a usar no Matlab é: x=A\b. Vamos ver:
A=[7 8; 2 -9];
b=[100; 10];
x=A\b
x =
   12.4051
    1.6456
Como se vê não foi necessária muita ginástica mental, a instrução \ resolveu tudo num instante!
Para verificar se os resultados estão certos basta fazer a operação inversa:
b=A*x
b =
  100.0000
   10.0000

Sem comentários: