Resolvendo um sistema esparso não simétrico e não diagonalmente dominante da melhor maneira

8

Lembro-me fracamente das minhas primeiras palestras "numéricas" de que os solucionadores lineares iterativos para geralmente exigem que quando seja decomposto comoAx=bA

A=D+M

onde D é uma matriz diagonal e tem diagonal zero, os elementos de devem ser dominantes sobre as entradas em para que os solucionadores iterativos tenham um bom desempenho.MDM

E se não for esse o caso e as entradas de se tornarem realmente pequenas?D

Devo usar um solucionador direto então?

Para ser mais específico, o sistema linear que quero resolver envolve uma matriz onde a parte não diagonal é constante, mas a parte diagonal depende de um parâmetro em alguns maneira trivial. Até agora, não vejo uma maneira de resolver para cada novamente.

A(ω)=D(ω)+M
ωA(ω)x=bω

As entradas diagonais têm o formato onde é um número real que depende da linha em que estamos, enquanto é um fator de convergência muito pequeno e é a unidade imaginária. Isso poderia levar a instabilidades numéricas quando ?Ajj=ω+zj+iηzjηiω+z0

EDIT: Bem, talvez mais uma coisa sobre a natureza de : se alguém definir como exatamente, então terá polos. Isso ocorre porque, em última análise, uso essa matriz para calcular as funções de Green (de muitos corpos) no domínio da frequência, e elas precisam de um fator de convergência para mover seus polos para fora do eixo real. A soma dos valores absolutos dos elementos da matriz fora da diagonal em cada linha é no máximo , mas a diagonal sempre terá algumas entradas cuja parte real é muito próxima ou igual a zero.A(ω)η0A(ω)η10

Lagerbaer
fonte
@JackPoulson Stokes é talvez o exemplo canônico de um problema de ponto de sela do PDE. Navier-Stokes incompatível às vezes é chamado de problema generalizado de ponto de sela porque é não simétrico, mas tem a mesma estrutura de restrição.
perfil completo de Jed Brown
@JedBrown: É justo, agora é óbvio que eu não trabalhei em Stokes! Eu sempre penso em métodos mistos para Darcy quando penso em ponto de sela.
Jack Poulson

Respostas:

4

Embora coloque algumas restrições sobre quais métodos funcionarão, a falta de dominância diagonal ou simetria não é inerentemente catastrófica. No entanto, essas propriedades são comumente associadas ao problema mais difícil de influência não local e à dificuldade de engrossar, e muitos solucionadores de "caixa preta" não funcionam. Para responder sua pergunta de uma maneira mais substantiva, precisaríamos conhecer os detalhes desse sistema específico (física, discretização, regime de parâmetros).

Minha sugestão prática é começar com solucionadores diretos e mergulhar em solucionadores iterativos somente se necessário. Você pode passar uma carreira desenvolvendo solucionadores iterativos robustos para um problema difícil em particular.

Jed Brown
fonte
3

Uma matriz diagonalmente dominante tem garantia de todos os autovalores todos positivos (se as entradas da diagonal forem positivas) ou todos negativos (se as entradas são todas negativas), pelo teorema de Gershgorin. A maioria dos métodos iterativos funciona apenas se os autovalores da matriz de iteração estiverem em uma região específica do plano complexo; portanto, a dominância diagonal garante que todos os autovalores tenham uma parte real estritamente positiva ou estritamente negativa (ou que todos os autovalores estejam dentro de um raio particular de algum número).

Se sua matriz de iteração tiver valores próprios que estão fora da região prescrita para um método específico, geralmente não funcionará corretamente. Existem pilhas de métodos por aí, mas não consigo escolher um método específico sem saber mais sobre o espectro de .A(ω)

Dan
fonte
2

Quão grande / escasso é o seu sistema? Você realmente precisa resolver isso iterativamente?

Eu sugeriria tentar resolvê-lo no Matlab ou Octave usando o solucionador esparso (apenas inicialize a matriz usando "esparso" e depois use barra invertida). Se isso funcionar para você, use o UMFPACK diretamente, que é o que Matlab e Octave usam internamente para as soluções esparsas.

Pedro
fonte
Na ordem de a linhas com no máximo 8 entradas por linha. 105106
Lagerbaer
1
A escassez não conta a história toda. Se existirem pequenos separadores de vértices, os solucionadores diretos devem encontrá-los e ter um desempenho razoável. Se o problema for 2D com essa escarsidade, um solucionador direto terá uma precisão de até graus de liberdade. Para problemas 3D, esse tamanho de problema precisará de bastante memória e tempo. 106
Jed Brown
Portanto, minha sugestão de experimentá-lo primeiro no Matlab ou no Octave - você verá se o solucionador pode lidar com isso de forma eficiente ou não. A eficiência depende fortemente da estrutura do problema, portanto não será possível fornecer recomendações definitivas.
Pedro