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.