next up previous contents
Next: Caso simmetrico Up: Implementazione del prodotto matrice-vettore Previous: Implementazione del prodotto matrice-vettore   Indice

Caso non simmetrico

Si vuole calcolare il prodotto matrice-vettore:

$\displaystyle A \bv = \bw$ (17)

con $ A$ matrice quadrata non simmetrica di ordine $ n$, $ \bv$ e $ \bw$ vettori in $ \Re^n$. È ben noto che la componente $ i$-esima di $ \bw$ è pari alla somma dei prodotti degli elementi della riga $ i$ di $ A$ per i corrispodenti elementi di $ \bv$:

$\displaystyle w_i = \displaystyle{\sum_{j=1}^n} a_{ij} v_j$ (18)

Se la matrice è memorizzata in modo compatto, gli elementi $ a_{ij}$ vanno opportunamente ricercati in SYSMAT mediante l'uso di IA, mentre gli indici $ j$ relativi alle colonne si trovano nel vettore intero JA. In particolare, gli elementi di $ A$ appartenenti alla riga $ i$ sono memorizzati in corrispondenza agli indici $ k$ del vettore SYSMAT compresi, per definizione di IA, nell'intervallo IA $ (i) \leq k \leq$IA$ (i+1)-1$. Gli indici di colonna $ j$, di conseguenza, sono memorizzati in JA$ (k)$.

Il prodotto matrice-vettore con $ A$ non simmetrica e memorizzata in forma compatta può quindi essere calcolato implementando il seguente algoritmo:




001 Per $ i=1,n$
002 azzero $ w_i$
003 Per $ k=$ IA$ (i)$, IA$ (i+1)-1$
004 $ j:=$JA$ (k)$
005 $ w_i:=w_i \; +$ SYSMAT $ (k) \cdot v_j$
006 Fine Per
007 Fine Per




Si noti che è sempre utile azzerare il vettore soluzione prima di procedere all'implementazione del ciclo di sommatoria (riga 2), al fine di evitare l'uso improprio di valori precedentemente contenuti in $ \bw$.


next up previous contents
Next: Caso simmetrico Up: Implementazione del prodotto matrice-vettore Previous: Implementazione del prodotto matrice-vettore   Indice
Massimiliano Ferronato 2005-09-27