Muszę macierzy AA i GG . Jest niewielkie i n x n z n bardzo duża (może być rzędu kilku milionów.) G oznacza n x m wysoką osnowę z m małe ( 1 < m < 1000 ), a każda kolumna może mieć tylko jeden 1 wejście reszta to 0 „s tak, że G T G = I . A jest ogromny, więc bardzo trudno odwrócić i mogę rozwiązać układ liniowy, taki jak A.An×nnGn×mm1<m<100010GTG=IAx = bAx=b iteracyjnie przy użyciu metody podprzestrzeni Kryłowa, takiej jak B i C G S t a b ( l )BiCGStab(l) , ale nie mamwyraźnie A - 1A−1 .
Chcę rozwiązać układ postaci: ( G T A - 1 G ) x = b(GTA−1G)x=b , gdzie xx i bb są wektorami długości mm . Jednym ze sposobów jest wykorzystanie algorytmu iteracyjnego w algorytmie iteracyjnym do rozwiązania dla A - 1A−1 dla każdej iteracji zewnętrznego algorytmu iteracyjnego. Byłoby to jednak niezwykle kosztowne obliczeniowo. Zastanawiałem się, czy istnieje obliczeniowo łatwiejszy sposób rozwiązania tego problemu.
Odpowiedzi:
Wprowadź wektor y : = - A - 1 G x i rozwiąż duży układ sprzężony A y + G x = 0 , G T y = - b dla ( y , x ) jednocześnie, stosując metodę iteracyjną. Jeśli A jest symetryczny (co wydaje się prawdopodobne, choć nie podajesz tego wprost), to system jest symetryczny (ale nieokreślony, choć quasidefinite, jeśli Ay:=−A−1Gx Ay+Gx=0 GTy=−b (y,x) A A jest pozytywnie określony), co może pomóc ci wybrać odpowiednią metodę. (odpowiednie słowa kluczowe: macierz KKT, macierz quasidefinite).
Edycja: Ponieważ A jest złożoną symetryczną, podobnie jak powiększona macierz, ale nie ma quasidefinity. Można jednak użyć procedury A x do obliczenia A ∗ x = ¯ A ¯ x ; dlatego możesz dostosować metodę, taką jak QMR ftp://ftp.math.ucla.edu/pub/camreport/cam92-19.pdf (zaprojektowaną dla prawdziwych systemów, ale możesz łatwo przepisać ją dla złożonych systemów, używając funkcji łączenia w miejsce transpozycji), aby rozwiązać problem.A Ax A∗x=Ax¯¯¯¯¯¯¯¯¯¯
Edit2: Actually, the (0,1)-structure of GG means that you can eliminate xx amd the components of GTyGTy symbolically, thus ending up with a smaller system to solve. This means messing with the structure of AA , and pays only when AA is given explicitly in sparse format rather than as a linear operator.
źródło
Following Arnold's reply, there is something you can do to simplify the problem. Specifically, rewrite the system as Ay+Gx=0,GTy=−bAy+Gx=0,GTy=−b . Then note that from the statement that GG is tall and narrow and each row has only one 1 and zeros otherwise, then the statement GTy=−bGTy=−b means that a subset of the elements of yy have a fixed value, namely the elements of −b−b .
Let us say that for simplicity that GG has mm columns and nn rows and that exactly the first mm rows have ones in them and that be reordering the elements of xx I can make it so that GG has the m×mm×m identity matrix at the top and a n−m×mn−m×m zero matrix at the bottom. Then
I can partition y=(yc,yf)y=(yc,yf) into mm "constrained" and n−mn−m "free" elements so that yc=−byc=−b . I can also partition AA so that A=(AccAcfAfcAff)A=(AccAfcAcfAff) . From the equation Ay+Gx=0Ay+Gx=0 I then get the following:
Accyc+Acfyf+x=0,Afcyc+Affyf=0
In other words, given the structure of GG , solving the linear system you have is really not more difficult than solving a single linear system with AA .
źródło
But we know GG , GTGT and AA , so
GTA−1Gx=bGTA−1Gx=b
GGTA−1Gx=GbGGTA−1Gx=Gb
Since GTG=IGTG=I , then GT=G−1GT=G−1 , so GGT=IGGT=I :
A−1Gx=GbA−1Gx=Gb
AA−1Gx=AGbAA−1Gx=AGb
Gx=AGbGx=AGb
GTGx=GTAGbGTGx=GTAGb
x=GTAGbx=GTAGb
Unless I've missed something, you don't need any iteration, or any solver to calculate x given GG , AA and bb .
źródło