Postaram się zastanowić nad pierwszym pytaniem dotyczącym postu3 × 3odwrotnie . Rozważać
A =⎡⎣⎢zabdoremifasolhja⎤⎦⎥
Ponieważ matryce są małe i bardzo ogólne (nie zawierają żadnej znanej struktury, zer, względnych skal elementów), myślę, że niemożliwe byłoby podanie algorytmu dla dowolnej skali (bez 1 / det ( A )) Odwrotny, że jest szybsze niż 18 skondensowanych klap, a każdy z elementów 9 wymaga 2 skondensowanych flop, a wszystkie produkty są unikalne pod warunkiem, które nie wymaga informacji na temat pozycji „a .
Tutaj oznacza dopasowanie (transponowanie kofaktorów), które zasadniczo jest odwrotność z „dowolną skalą” (pod warunkiem, że istnieje odwrotność).ZAa , … , i
ZA- 1det ( A ) = przym ( A ) =⎡⎣⎢e i - fhb i - c godzc e - b frei - fsola i - c ga f- c dsole - dha h - b ga e - b d⎤⎦⎥
przym ( A )
Jednak niektóre obliczenia mogą być ponownie wykorzystane do obliczenia . Jeśli rozwinę ją w pierwszej kolumnie (dostępnych jest jeszcze 5 innych opcji):
Uwaga, że (* ) zostało już obliczone podczas oceny . Tak więc odwrotność wyznacznika można obliczyć w 4 dodatkowych połączonych klapach (jeśli wzajemność jest uważana za 1 flop).det ( A )
det ( A )= a ( e i - fh ) + b ( fsol- di ) + c ( dh - ge )= a( e i - fh )∗- b( di - fsol)∗- c( ge - dh )∗
przym ( A )1 / det (A )
Teraz każde 9 elementów powinno być skalowane przez już uzyskaną odwrotność wyznacznika, dodając kolejne 9 stopionych klap.przym ( A )
Więc,
- Oblicz w 18 połączonych klapachprzym ( A )
- Oblicz w 3 połączonych klapach, używając wpisów już obliczonychdet ( A )przym ( A )
- Znajdź (przy założeniu 1 flopa).1det ( A )
- Skaluj każdy element już obliczonego według w kolejnych 9 połączonych klapach.przym ( A )1det ( A )
Powoduje to 18 + 3 + 1 + 9 = 31 połączonych flopów . Nie opisałeś swojego sposobu obliczania wyznacznika, ale myślę, że można zapisać 1 dodatkowy flop. Lub można go użyć do wykonania sprawdzenia w kroku 3, gdzie jest tolerancją dla przypadku zdegenerowanego (nieodwracalnego), co daje 32 stopione klapy (przy założeniu, że 1 flop).| det(A) | >ϵϵif
Nie sądzę, że istnieje szybszy sposób obliczenia odwrotności macierzy ogólnej , ponieważ wszystkie pozostałe obliczenia są unikalne. Korzystanie z Cayleya-Hamiltona nie powinno pomóc w perspektywie prędkości, ponieważ ogólnie będzie wymagać obliczenia dla macierzy oprócz niektórych innych operacji.3 × 3ZA2)3 × 3
NB:
- ta odpowiedź nie dotyczy stabilności numerycznej
- możliwy potencjał wektoryzacji i optymalizacji wzorca dostępu do pamięci również nie jest omawiany