Proverò a dare il mio pensiero sulla prima domanda riguardante l' inverso rapido 3 × 3 . Prendere in considerazione
A = ⎡⎣⎢un'Bcdefghio⎤⎦⎥
1 / det ( A )a , … , i A - 1 det ( A ) = adj ( A ) = [ e i - f h d i - f g g e - d h b i - c h a i - c g a h - b g c e - b f a f - c d aUNa , ... , io
UN- 1det ( A ) = adj ( A ) = ⎡⎣⎢e i - fhb i - c hc e - b fdi - fga i - c ga f- c dge - dha h - b ga e - b d⎤⎦⎥
agg ( A )
Tuttavia, alcuni calcoli possono essere riutilizzati per il calcolo di . Se lo espanderò sulla prima colonna (ci sono altre 5 scelte):
Nota che (* ) è già stato calcolato durante la valutazione di . Quindi, il reciproco del determinante può essere calcolato in 4 flop fusi aggiuntivi (se reciproco è considerato come 1 flop).det ( A ) adj(A)1/det(A)
det ( A )= a ( e i - fh ) + b ( fg- di ) + c ( dh - ge )= a ( e i - fh )*- b ( di - fg)*- c ( ge - dh )*
agg ( A )1 / det ( A )
Ora, ogni 9 elementi di dovrebbero essere ridimensionati dal reciproco già ottenuto del determinante, aggiungendo altri 9 flop fusi.agg ( A )
Così,
- Calcola in 18 flop fusiadj(A)
- Calcola in 3 flop fusi usando le voci di già calcolatoagg ( A )det(A)adj(A)
- Trova (presupponendo 1 flop).1det(A)
- Scala ogni elemento di già calcolato di in altri 9 flop fusi.1adj(A)1det(A)
Il risultato è 18 + 3 + 1 + 9 = 31 flop fusi . Non hai descritto il tuo modo di calcolare il determinante, ma immagino che sia possibile salvare 1 flop aggiuntivo. Oppure può essere usato per eseguire il controllo al punto 3, dove è la tolleranza per il caso degenerato (non invertibile), con conseguente 32 flop fusi (supponendo che sia 1 flop).ϵ|det(A)|>ϵϵif
Non penso che ci sia un modo più veloce per calcolare l'inverso di una matrice generale poiché tutti i calcoli rimanenti sono unici. L'uso di Cayley-Hamilton non dovrebbe essere d'aiuto dal punto di vista della velocità, poiché in generale richiederà il calcolo di per una matrice oltre ad altre operazioni.3×3 3 × 3A23×3
NB:
- questa risposta non riguarda la stabilità numerica
- anche il possibile potenziale di vettorializzazione e ottimizzazione del modello di accesso alla memoria non viene discusso