Existem duas questões separadas aqui.
- Como usar solucionadores eficientes para para aplicar .Ax=bA1/2b
- Como calcular o determinante.
As respostas curtas são: 1) use aproximações racionais da função da matriz; e 2) você não usa, mas não precisa. Abordo esses dois problemas abaixo.
Aproximações de raiz quadrada de matriz
A idéia aqui é converter uma aproximação de função racional para funções escalares em uma aproximação de função racional para funções de matriz.
Sabemos que existem funções racionais que podem aproximar extremamente bem a função da raiz quadrada,
para positivo . De fato, para obter alta precisão no intervalo , você precisa dos termos da série. Para obter os pesos apropriados ( ) e polos ( ), basta procurar a aproximação da função racional online ou em um livro.
x−−√≈r(x):=a1x+b1+a2x+b2+⋯+aNx+bN,
bi[m,M]O(logMm)ai−bi
Agora considere aplicar esta função racional à sua matriz:
r(A)=a1(A+b1I)−1+a2(A+b2I)−1+⋯+aN(A+bNI)−1.
Devido à simetria de , temos
onde é a decomposição do valor singular (SVD) de . Portanto, a qualidade da aproximação da matriz racional é equivalente à qualidade da aproximação da função racional no local dos valores próprios.A
||A1/2−r(A)||2=||U(Σ1/2−r(Σ))U∗||2,=maxi|σi−−√−r(σi)|
A=UΣU∗A
Denotando o número de condição de por , podemos aplicar a qualquer tolerância desejada executando gráfico com deslocamento positivo Soluções Laplacianas da forma,
AκA1/2bO(logκ)
(A+bI)x=b.
Essas soluções podem ser feitas com o seu solucionador gráfico Laplaciano favorito - prefiro técnicas do tipo multigrid, mas a que você mencionou no artigo também deve ser boa. O extra ajuda apenas a convergência do solucionador.bI
Para um excelente artigo discutindo isso, bem como técnicas gerais de análise complexa que se aplicam a matrizes não simétricas, consulte Computação , e funções de matriz relacionadas por integrais de contornoAαlog(A) , de Hale, Higham e Trefethen (2008). )
Determinação "computação"
O determinante é mais difícil de calcular. Tanto quanto eu sei, a melhor maneira é calcular a Schur decomposição usando o algoritmo QR, em seguida, ler fora dos valores próprios da diagonal da matriz triangular superior . Isso leva tempo , onde é o número de nós no gráfico.A=QUQ∗UO(n3)n
Entretanto, calcular determinantes é um problema inerentemente mal condicionado, portanto, se você ler um artigo que se baseia em determinantes computacionais de uma matriz grande, deve ser muito cético em relação ao método.
Felizmente, você provavelmente não precisa do determinante. Por exemplo,
Podemos visualizar como uma atualização de baixa classificação para a identidade,
onde o número numérico efetivo rank, , da atualização de rank baixo é uma medida local de quão não gaussiana é a verdadeira distribuição; Normalmente, isso é muito menor do que a classificação completa da matriz. De fato, se é grande, então a distribuição verdadeira é localmente tão não-gaussiana que é preciso questionar toda a estratégia de tentar amostrar essa distribuição usando aproximações gaussianas locais.A−1x0Axp
A−1x0Axp=I+QDQ∗,
rr
Os fatores de baixo escalão e podem ser encontrados com SVD ou Lanczos aleatórios aplicando a matriz
a vetores diferentes, cada aplicação requer um gráfico Solução Laplaciana. Portanto, o trabalho geral para obter esses fatores de classificação baixa é .QD
A−1x0Axp−I
O(r)O(rmax(n,E))
Conhecendo , a taxa determinante é então
D=diag(d1,d2,…,dr)
det(A−1x0Axp)=det(I+QDQ∗)=exp(∑i=1rlogdi).
Essas técnicas de cálculo de ração determinante de baixo escalão podem ser encontradas em Um método estocástico de Newton MCMC para problemas estatísticos inversos de larga escala com aplicação à inversão sísmica , por Martin, et al. (2012). Neste artigo, ele é aplicado a problemas de continuum, de modo que o "gráfico" é uma grade no espaço 3D e o gráfico Laplaciano é a matriz laplaciana real. No entanto, todas as técnicas se aplicam aos laplacianos gerais do gráfico. Provavelmente já existem outros trabalhos que aplicam essa técnica a gráficos gerais (a extensão é trivial e basicamente o que acabei de escrever).