Lembro-me fracamente das minhas primeiras palestras "numéricas" de que os solucionadores lineares iterativos para geralmente exigem que quando seja decomposto como
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.
E se não for esse o caso e as entradas de se tornarem realmente pequenas?
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.
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 ?
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.
fonte
Respostas:
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.
fonte
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(ω)
fonte
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.
fonte