Como aproximar o número de condição de uma matriz grande , se é uma combinação de transformadas de Fourier (não uniforme ou uniforme), diferenças finitas e matrizes diagonais ?
As matrizes são muito grandes e não são armazenadas na memória e estão disponíveis apenas como funções.
Em particular, tenho a seguinte matriz:
Quero investigar a relação entre e o número da condição .
Presumo que seja necessário algum tipo de abordagem iterativa? Idealmente, haveria algum código MATLAB disponível.
Respostas:
O MATLAB possui algumas funções "exatas" para isso
cond
ercond
, com o último retornando um recíproco do número da condição. A função aproximada do Matlabcondest
é descrita mais detalhadamente abaixo.Frequentemente, as estimativas do número da condição são geradas como subprodutos da solução de um sistema linear para a matriz; portanto, você pode pegar as estimativas do número da condição em outro trabalho que precisa fazer de qualquer maneira. Veja aqui uma breve descrição de como as estimativas são calculadas. Também documentação Sandia Labs AztecOO observações (ver Sec. 3.1) que as estimativas número de condição opcionais estão disponíveis a partir solucionadores iterativos (usando o gerado tridiagonal Lanczos matriz com Conjugado gradientes ou a matriz Hessenburg gerado com Reiniciado GMRES).
Como suas matrizes são "muito grandes" e "disponíveis apenas como funções", a abordagem lógica seria um método que faça o "piggyback" de um solucionador ou variante de gradiente conjugado.
Um artigo recente da arXiv.org As aproximações de autovalores extremas não estacionários em soluções iterativas de sistemas lineares e estimadores para erro relativo propõe essa abordagem e tem algumas citações na literatura anterior.
Agora que estou olhando, este fórum tem várias perguntas anteriores estreitamente relacionadas (nem todas com respostas, mas verifique os comentários):
Estimar valores próprios extremos com CG
Estimativa de números de condição para matrizes muito grandes
Algoritmo mais rápido para calcular o número de condição de uma matriz grande no Matlab / Octave
condest
Como sua matriz é aparentemente hermitiana e definida positivamente, talvez o número de condição com 2 normas seja de maior interesse. O problema então equivale a estimar a razão do maior para o menor autovalor (absoluto). O desafio é um tanto paralelo ao caso da norma 1, em que geralmente uma boa estimativa para o maior autovalor pode ser facilmente obtida, mas estimar o menor autovalor é mais difícil.
Embora vise casos não-SPD (e até não-quadrados), este artigo recente do arXiv.org, Estimativa de número de condição iterativa confiável , fornece uma boa visão geral do menor problema de estimativa de autovalores e uma linha de ataque promissora por um subespaço de Krylov (LSQR) que equivale a Conjugate Gradients no caso SPD.
fonte