Resolução


22

Eu tenho matrizes e . é escasso e é com muito grande (pode ser da ordem de vários milhões.) é uma matriz de altura com bastante pequeno ( ) e cada coluna pode só tem uma única entrada com o resto sendo 's, de tal modo que . é enorme, por isso é realmente difícil de inverter, e eu posso resolver um sistema linear como iterativamente usando um método de subespaço de Krylov como , mas não tenhoAGAn×nnGn×mm1<m<100010GTG=IAAx=bBiCGStab(l)A1 explicitamente.

Eu quero resolver um sistema da forma: , onde e são vetores de comprimento . Uma maneira de fazer isso é usar um algoritmo iterativo dentro de um algoritmo iterativo para resolver para cada iteração do algoritmo iterativo externo. Isso seria extremamente caro computacionalmente, no entanto. Eu queria saber se existe uma maneira computacionalmente mais fácil de resolver esse problema.(GTA1G)x=bxbmA1


Acabei de adicionar à minha resposta uma observação sobre a exploração da estrutura 0-1.
Arnold Neumaier

Respostas:


19

Introduza o vetor y:=A1Gx e resolva o sistema acoplado grande Ay+Gx=0 , GTy=b para (y,x) simultaneamente, usando um método iterativo. Se A é simétrico (como parece provável, embora você não o indique explicitamente), o sistema é simétrico (mas indefinido, embora quase indefinido se Aé definitivo positivo), o que pode ajudá-lo a escolher um método apropriado. (palavras-chave relevantes: matriz KKT, matriz quaseidefinida).

Edit: Como é simétrico complexo, o mesmo ocorre com a matriz aumentada, mas não há quasefinibilidade. No entanto, você pode usar a rotina A x para calcular A x = ¯ A ¯ x ; portanto, você pode adaptar um método como o QMR ftp://ftp.math.ucla.edu/pub/camreport/cam92-19.pdf (projetado para sistemas reais, mas você pode reescrevê-lo facilmente para sistemas complexos, usando o anexo em local da transposição) para resolver seu problema.AAxAx=Ax¯¯

Edit2: Na verdade, a estrutura (0,1) de significa que você pode eliminar x e os componentes de G T y simbolicamente, terminando assim com um sistema menor para resolver. Isso significa mexer com a estrutura de A e paga apenas quando A é fornecido explicitamente em formato esparso, e não como um operador linear.GxGTyAA


Obrigado! A é simétrico complexo. Existe razão para esperar que a condição da matriz aumentada seja pior do que a da matriz original ? Se m for pequeno, a matriz aumentada é apenas marginalmente maior em tamanho que A, então eu suspeitaria que resolver iterativamente esse sistema aumentado não deve ser muito mais difícil do que resolver um sistema com A? A
Costis

O número de condição dos dois sistemas geralmente não é relacionado; depende muito do que é. - Adicionei à minha resposta informações sobre como explorar simetria complexa. G
Arnold Neumaier

Oi pessoal! Obrigado por todas as respostas; esse lugar é ótimo! Uma extensão da pergunta original: suponha agora que eu tenho , onde G e A têm o mesmo significado que na pergunta original, mas B é uma matriz nxn com deficiência de classificação ( mesmo tamanho que A) e todo o G T A - H B A - 1 G é a classificação completa. Como você resolveria o novo sistema, já que agora o inverso de B não existe, então você não pode ter A B - 1 A H(GTAHBA1G)x=bGTAHBA1GAB1AH. Eu não acho que funcionaria simplesmente com o pseudoinverso de B também.
Costis

1
Introduza e z : = A - H B y e proceda de forma análoga ao caso resolvido. (Possivelmente você também precisa fator B em matrizes de posto completo e introduzir um vector intermediário adicional.)y:=A1Gxz:=AHByB
Arnold Neumaier

Oi Arnold. Obrigado, isso realmente funciona! Eu testei com alguns exemplos de teste muito pequenos e funciona muito bem. No entanto, meu solucionador iterativo está tendo problemas enormes ao inverter a matriz aumentada. Embora sejam necessárias apenas 80 iterações (alguns segundos) para resolver um sistema da forma com a matriz A original, o sistema com a matriz aumentada (que é 2n + mx 2n + m ou 2n-mx 2n- m usando a abordagem de @ wolfgang-bangerth) leva dezenas de milhares de iterações (várias horas) para resolver um RHS. Existem estratégias para acelerar a convergência? talvez um pré-condicionador? Ax=b
Costis

7

Após a resposta de Arnold, há algo que você pode fazer para simplificar o problema. Reescreva especificamente o sistema como . Observe que, a partir da afirmação de que G é alto e estreito e cada linha tem apenas 1 e zeros, a instrução G T y = - b significa que um subconjunto dos elementos de y tem um valor fixo, a saber, os elementos de - b .Ay+Gx=0,GTy=bGGTy=byb

Digamos que, por simplicidade que tem m colunas e n linhas e que exatamente as primeiras m linhas têm mais neles e que seja reordenar os elementos de x que posso fazer com que G tem o m × m matriz identidade no topo e uma matriz n - m × m zero na parte inferior. Então eu posso particionar y = ( y c , y f ) em m "restrito" e n - m "livre" elementos para queGmnmxGm×mnm×my=(yc,yf)mnm . Também posso particionar A para que A = ( A c c A c f A f c A f f ) . A partir da equação A y + G x = 0 , obtive o seguinte: A c c y c + A c f y f + x = 0 ,yc=bAA=(AccAcfAfcAff)Ay+Gx=0 e usando o que sabemos sobre y c , temos a partir da segunda dessas equações A f f y f = A f c b e consequentemente x = A c c b - A c f A - 1 f f A f c b . Em outras palavras, a única matriz que você deve inverter é o subconjunto de A

Accyc+Acfyf+x=0,Afcyc+Affyf=0
yc
Affyf=Afcb
x=AccbAcfAff1Afcb.
Acujas linhas e colunas não são mencionadas em (o espaço nulo de G ). Isso você pode facilmente fazer: (i) calcular z = A f c b ; (ii) use qualquer solucionador que você precise resolver A f f h = z ; (iii) calcular x = A c c b - A c f h .GGz=AfcbAffh=zx=AccbAcfh

Em outras palavras, dada a estrutura de , resolvendo o sistema linear você tem não é realmente mais difícil do que a solução de um único sistema linear com A .GA


0

GGTA

GTA1Gx=b

GGTA1Gx=Gb

GTG=I, then GT=G1, so GGT=I:

A1Gx=Gb

AA1Gx=AGb

Gx=AGb

GTGx=GTAGb

x=GTAGb

Unless I've missed something, you don't need any iteration, or any solver to calculate x given G, A and b.


3
GT being a left inverse of G does not imply that it is also a right inverse. Consider G=e1, where GT=e1T is a left inverse, but GGT=e1e1TI.
Jack Poulson

1
GCnCm, hence GTG=Im×m, but GGTIn×n. Rather it's a projector on a subspace.
Deathbreath
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.