Mediante l'algoritmo sviluppato nel precedente paragrafo non si calcola
esplicitamente la matrice di precondizionamento
ma solamente il
fattore incompleto
. È quindi necessario sviluppare un algoritmo
ad hoc che permetta di calcolare il generico prodotto
senza
generare esplicitamente
.
Sia
il vettore in
risultato del prodotto
. Per
definizione di
si ha:
Come osservato per il prodotto matrice-vettore e per la determinazione del
fattore incompleto di Cholesky, la sommatoria contenuta in (32) non
è banale da implementare in modo efficiente memorizzando le matrici secondo
il sistema CRS. A tal proposito, risulta conveniente definire un vettore
di accumulazione
nelle cui componenti viene aggiornato il prodotto
contenuto nella sommatoria dell'equazione (32) procedendo per righe
di
. L'algoritmo per il calcolo del vettore
può pertanto
essere scritto come:
001 Per
002 azzero
003 Fine Per
004
PREC
005 Per
006
IA
006 Per
IA
, IA
007
JA
008
PREC
009 Fine Per
010
PREC
011 Fine Per
Ottenuto il vettore
si può infine calcolare
risolvendo il
sistema (29) tramite sostituzioni all'indietro (Figura 2). La
formula ricorrente si ricava in modo del tutto analogo a quanto fatto nelle
equazioni (31) e (32) partendo in questo caso dalla componente
-esima:
L'implementazione della (2) risulta stavolta molto semplice anche
memorizzando la matrice
in forma compatta. Sempre utilizzando
il vettore di accumulo
, l'algoritmo corrispondente può essere scritto
nel modo seguente:
001
PREC
002 Per
con passo -1
003 azzero
004
IA
005 Per
IA
, IA
006
JA
007
PREC
008 Fine Per
009
PREC
010 Fine Per
Per un confronto, viene messa a disposizione dello studente la subroutine
LSOLVE che implementa gli algoritmi soprariportati.