Use o botão abaixo para reportar erros ou dar sugestões.
Cálculo Numérico - Versão Scilab
Considere um sistema linear , onde a matriz é densa5 . A fim de resolver o sistema, podemos fatorar a matriz como o produto de uma matriz triangular inferior e uma matriz triangular superior, ou seja, .
Sendo assim, o sistema pode ser reescrito da seguinte forma:
Isto significa que, ao invés de resolvermos o sistema original, podemos resolver o sistema triangular inferior e, então, o sistema triangular superior , o qual nos fornece a solução de .
A matriz da fatoração6 é a matriz obtida ao final do escalonamento da matriz .
A matriz é construída a partir da matriz identidade , ao longo do escalonamento de A. Os elementos da matriz são os múltiplos do primeiro elemento da linha de a ser zerado dividido pelo pivô acima na mesma coluna.
Por exemplo, para zerar o primeiro elemento da segunda linha de , calculamos
| (4.81) |
e fazemos
| (4.82) |
Note que denotamos para nos referenciarmos a linha de . Da mesma forma, se necessário usaremos para nos referenciarmos a coluna de .
Para zerar o primeiro elemento da terceira linha de , temos
| (4.83) |
e fazemos
| (4.84) |
até chegarmos ao último elemento da primeira coluna de .
Repetimos o processo para as próximas colunas, escalonando a matriz e coletando os elementos abaixo da diagonal7 .
Solução. Começamos fatorando a matriz dos coeficientes deste sistema:
Completada a fatoração LU, resolvemos, primeiramente, o sistema :
| (4.90) |
o qual no fornece , e . Por fim, obtemos a solução resolvendo o sistema :
| (4.91) |
o qual fornece , e .
No Scilab, podemos implementar o algoritmo para fatoração da seguinte forma:
Podemos analisar o custo computacional, reduzindo o problema em problemas menores.
Na linha 4, iniciamos com . Desta forma varia de até na linha 5.
A linha 6 terá sempre 1 flop.
A linha 7, com tem um bloco de tamanho 2:n contabilizando flops do produto e flops da subtração.
Nas linhas 6-8 são feitas flops independente do valor de . Como varia de até , teremos que o bloco é repetido vezes, ou seja, o custo das linhas 5-9 é
| (4.92) |
Voltamos a linha 4 quando . Das linhas 6-8 teremos flops (o bloco terá um elemento a menos) que será repetido vezes, pois i=3:n, ou seja,
| (4.93) |
Para , temos .
Para , temos .
Finalmente, para , temos .
Somando todos esses custos, temos
Para calcularmos o custo computacional de um algoritmo completo, uma estratégia é separar o algoritmo em partes menores, mais fáceis de analisar.
Para resolver o sistema, devemos primeiro fatorar a matriz nas matrizes e . Vimos que o custo é
| (4.99) |
Depois devemos resolver os sistemas e . O custo de resolver os dois sistemas é (devemos contar duas vezes)
| (4.100) |
Somando esses custos, temos que o custo para resolver um sistema linear usando fatoração é
| (4.101) |
Quando cresce, prevalessem os termos de mais alta ordem, ou seja,
| (4.102) |
Devemos apenas multiplicar pelo custo de resolver um sistema linear usando fatoração , ou seja, o custo será
| (4.103) |
e com temos
| (4.104) |
Porém, se estivermos resolvendo sistemas com a mesma matriz (e diferente lado direito para cada sistema) podemos fazer a fatoração LU uma única vez e contar apenas o custo de resolver os sistemas triangulares obtidos.
Custo para fatoração LU de : .
Custo para resolver sistemas triangulares inferiores: .
Custo para resolver sistemas triangulares superiores: .
Somando esses custos obtemos
| (4.105) |
que quando obtemos
| (4.106) |
Como vemos em Álgebra Linear, um método para obter a matriz é realizar o escalonamento da matriz onde é a matriz identidade. Ao terminar o escalonamento, o bloco do lado direito conterá .
Isto é equivalente a resolver sistemas lineares com a mesma matriz e os vetores da base canônica tal que
| (4.107) |
onde serão as colunas da matriz inversa, já que .
O custo para resolver esses sistemas lineares foi calculado na seção anterior como
| (4.108) |
Este texto é disponibilizado nos termos da licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC-BY-SA 3.0). Página gerada em 19/8/2020 às 17:36:32.