Há em torno de uma maneira simples para inverter uma triangular (superior ou inferior) da matriz?

StackOverflow https://stackoverflow.com/questions/420612

Pergunta

Eu estou tentando implementar algumas operações básicas de álgebra linear e uma dessas operações é a inversão de um triangular (superior e / ou inferior) da matriz. Existe um algoritmo fácil e estável para fazer isso?

Obrigado.

Foi útil?

Solução

Sim, o uso substituição de volta. Um algoritmo padrão para inverter uma matriz é encontrar a sua decomposição LU (decomposição num triangular inferior e uma matriz superior triangular), uso de volta substituio nos pedaços triangulares, e, em seguida, combinam os resultados para obter o inverso da matriz original.

Outras dicas

Não inverter-lo se você puder. É um dos mandamentos básicos de álgebra linear numérica.

É muito mais rápido e numericamente estável para manter a matriz em si L na memória e computação

inv(L)b
com back-substituição sempre que você precisa fazer outra coisa com inv (L).

Note que o algoritmo habitual para inverter isso requer a solução dos sistemas

inv(L)[1 0 0 ...],
inv(L)[0 1 0 ....],
inv(L)[0 0 1 ....]
e assim por diante, de modo que você vê é muito mais fácil para não invertê-lo em tudo.

Dada uma matriz triangular inferior L, backsubstitution permite que você resolva o sistema L x = b rapidamente para qualquer lado direito b.

Para inverter L, você pode resolver este sistema para a mão direita lados e1 = (1,0, ..., 0), e2 = (0,1, ..., 0), ..., en = (0,0, ..., 1) e combinar os vectores solução resultante em uma matriz única (necessariamente triangular inferior).

Se você está interessado em uma solução de forma fechada, os elementos da diagonal da inversa são os inversos dos elementos da diagonal originais, e a fórmula para o resto dos elementos da inversa fica cada vez mais complicado como você se move brindes a partir da diagonal.

Se você está falando de reais precisão única, ter um olhar para o código-fonte para as rotinas LAPACK STRTRI e STRTI2 .

Uau, isso é praticamente metade do conteúdo de um curso de análise numérica. Os algoritmos padrão irá fazê-lo, e não há um monte de código enlatados aqui . A fonte final para este e mais outros problemas usuais de análise numérica é Numerical Recipes .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top