Risolvere un enorme sistema lineare denso?


11

C'è qualche speranza nel risolvere efficacemente il seguente sistema lineare con un metodo iterativo?

A∈Rn×n,x∈Rn,b∈Rn, with n>106

Ax=b

con

, dove Δ è una matrice molto sparsa con poche diagonali, derivante dalla discretizzazione dell'operatore Laplace. Sulla sua diagonale principale ci sono - 6 e ci sonoaltre 6 diagonali con 1 su di essa.A=(Δ−K)Δ−661

è unamatrice R n × n completa che è composta completamente da una.KRn×n

Risolvere funziona bene con metodi iterativi come Gauss-Seidel, perché è una matrice sparsa in diagonale dominante. Ho il sospetto che il problema A = ( Δ - K ) sia praticamente impossibile da risolvere in modo efficiente per un gran numero di n , ma c'è qualche trucco forse per risolverlo, sfruttando la struttura di K ?A=ΔA=(Δ−K)nK

EDIT: Farebbe qualcosa di simile

// risolvi per x k + 1 con Gauss-SeidelΔxk+1=b+Kxkxk+1

ρ(Δ−1K)<1ρΔ−1Knn=256

Δ

Δ∈Rn×n

Viene creato nel modo seguente in matlab

n=W*H*D;

e=ones(W*H*D,1);

d=[e,e,e,-6*e,e,e,e];

delta=spdiags(d, [-W*H, -W, -1, 0, 1, W, W*H], n, n);


Δ

Δ

Fa il Woodbury matrice identità aiuto dal momento che K è basso rango?
— Aron Ahmadia,

Risposte:


14

n>106n≈1012ΔΔ

  • Usa il sistema bordato

M=(ΔeeT1)

e

M(xy)=(b0)

usando un solutore iterativo o diretto.

  • AΔ−eeTP−1≈Δ−1Δ

KAzh=Δzy=h−e(eTz)z
— Wolfgang Bangerth,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.