Preciso para calcular uma série de matriz inversa (por Newton iteração decomposição polar), com muito pequeno número de casos degenerados ( ).
Inverso explícito (via menores de matriz divididos por determinante) parece funcionar e tem cerca de ~ 32 ~ 40 fracassos fundidos (dependendo de como eu calculo o inverso do determinante). Sem considerar o fator de escala de detecção, são apenas 18 flops fundidos (cada um dos 9 elementos tem a forma ab-cd, 2 flops fundidos).
Questão:
- Existe uma maneira de calcular inversos de usando menos de 18 (com escala arbitrária) ou 32 (com escala adequada, considerando 1 op op) falhanços fundidos?
- Existe uma forma económica (utilizando 50 ~ f-flops) para calcular uma retro-estável deixado inversa de um matriz?
Estou usando carros alegóricos de precisão única (jogo para iOS). A estabilidade para trás é um novo conceito interessante para mim e quero experimentar. Aqui está o artigo que provocou o pensamento.
matrix
matrix-equations
inverse
matrix-factorization
Sergiy Migdalskiy
fonte
fonte
Respostas:
Tentarei refletir sobre a primeira pergunta sobre o inverso rápido3× 3 . Considerar
Como as matrizes são pequenas e muito gerais (não apresentam nenhuma estrutura conhecida, zeros, escalas relativas dos elementos), acho que seria impossível fornecer um algoritmo para escala arbitrária (sem ) inversa que seja mais rápido do que 18 fracassos fundidos, como cada um de 9 elementos requer 2 fracassos fundidos, e todos os produtos são únicos, desde nenhuma informação prévia sobre a entradas de um , ... , i . A - 1 det ( A ) = adj ( A ) = [ e i - f1 / det ( A ) UMA um , ... , i
Aqui,adj(A)indica o adjugado (transposição de cofatores), que é essencialmente um inverso com "escala arbitrária" (desde que exista o inverso).
Assim,
if
NB:
fonte