Si vuole ora calcolare il prodotto (17) in cui è matrice
simmetrica di cui si memorizza la sola triangolare alta. Poiché gli elementi
con
non sono ora immediatamente disponibili nella sequenza
di coefficienti della riga
, conviene scrivere la definizione (18)
come:
Dalla (19) si deduce che il contributo a relativo agli elementi
con
può essere implementato in maniera del tutto analoga a quanto
fatto nel paragrafo precedente, mentre il contributo relativo agli elementi
con
può essere determinato selezionando in SYSMAT le componenti
per cui JA
, cioè appartenenti alla colonna
-esima. È
del tutto evidente, tuttavia, che questo modo di procedere, seppure intuitivo,
risulta inapplicabile da un punto di vista pratico. Sarebbe, infatti,
necessario procedere ad una ricerca su
componenti per
volte, con
un dispendio che renderebbe inutile il vantaggio fornito dalla memorizzazione
compatta della matrice e, in certi casi, dalla convergenza accelerata del
GCM.
Conviene osservare che gli elementi della triangolare alta della riga ,
oltre a contribuire al calcolo di
, entrano in gioco, in virtù della
simmetria di
, anche nel calcolo di
, con
pari all'indice
di colonna dell'elemento considerato. All'interno del medesimo ciclo sulle
righe
si aggiornerà pertanto non solo
ma anche tutti i
corrispondenti. L'algoritmo descritto nel precedente paragrafo viene quindi
modificato nel modo seguente:
001 Per
002 azzero
003 Fine Per
004 Per
005 IA
006
SYSMAT
007 Per IA
, IA
008 JA
009
SYSMAT
010
SYSMAT
011 Fine Per
012 Fine Per
Si noti che, a differenza dell'algoritmo utilizzato per matrici non
simmetriche, in questo caso l'azzeramento del vettore prodotto va
fatto con un ulteriore ciclo (righe 1-3) esterno a quello di calcolo di
. Inoltre, il contributo a
dato dall'elemento diagonale
viene conteggiato a parte (riga 6) per evitare di considerarlo due volte
nel ciclo successivo (corrisponde infatti al caso in cui
).