Risolvere un enorme sistema lineare denso?


11

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

ARn×n,xRn,bRn, 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>106n1012ΔΔ

  • Usa il sistema bordato

M=(ΔeeT1)

e

M(xy)=(b0)

usando un solutore iterativo o diretto.

  • AΔeeTP1Δ1Δ

KAzh=Δzy=he(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.