25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

356 Array Processing<br />

• Se MATRIX_A ha forma (/n,m/) e MATRIX_B ha forma (/m/), allora il risultato sarà un<br />

array di rango uno di forma (/n/).<br />

• Se gli argomenti sono di tipo numerico, allora l’elemento (i,j)_mo dell’array risultato<br />

avrà valore pari a SUM((riga_i di MATRIX_A)*(colonna_j di MATRIX_B)).<br />

• Se gli argomenti sono di tipo logico, allora l’elemento (i,j)_mo dell’array risultato avrà<br />

valore pari a ANY((riga_i di MATRIX_A).AND.(colonna_j di MATRIX_B)).<br />

Esempi:<br />

Siano a la matrice:<br />

2 3 4<br />

3 4 5<br />

b la matrice:<br />

2 3<br />

3 4<br />

4 5<br />

x il vettore: (/1,2/) e y il vettore: (/1,2,3/).<br />

<strong>Il</strong> risultato di MATMUL(a,b) è la matrice:<br />

29 38<br />

38 50<br />

<strong>Il</strong> risultato di MATMUL(x,a) è il vettore (/8,11,14/).<br />

<strong>Il</strong> risultato di MATMUL(a,y) è il vettore (/20,26/).<br />

<strong>Il</strong> programma che segue vuole essere un riepilogo di alcuni dei principali argomenti trattati<br />

in questo capitolo. Allo scopo viene presentata l’implementazione del classico algoritmo di<br />

Crout per la risoluzione di un sistema di equazioni algebriche lineari. Al fine di agevolare la<br />

comprensione del codice, si ricorda che, dato un sistema di equazioni scritto in forma matriciale<br />

come:<br />

Ax = b<br />

il metodo in esame procede preliminarmente ad una fattorizzazione LU della matrice A dei<br />

coefficienti in modo da trasformare il problema precedente nella determinazione della soluzione<br />

dei due sistemi triangolari:<br />

Ly = b<br />

Ux = y<br />

per poi passare a risolvere questi ultimi ottenendo, infine, la soluzione x del sistema dato.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!