25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

294 Unità di Programma<br />

definite. In particolare, definite due matrici 3×3 A e B ed un vettore c lo scopo del programma<br />

è quello di eseguire le operazioni:<br />

A×B<br />

A×c<br />

A −1<br />

A/c = A −1 ×c<br />

PROGRAM prova_operatori<br />

!<br />

USE operatori<br />

IMPLICIT NONE<br />

TYPE(matrix),DIMENSION(3,3) :: A, B, Unity<br />

TYPE(matrix),DIMENSION(3) :: c<br />

TYPE(matrix),DIMENSION(3,3) :: AperB, Inv_A<br />

TYPE(matrix),DIMENSION(3) :: Aperc, cdivA<br />

INTEGER :: i, j, dim<br />

REAL :: h<br />

! Inizializzazione delle matrici<br />

DO i=1,3<br />

DO j=1,3<br />

Unity%elem=0.0<br />

CALL RANDOM_NUMBER(HARVEST=h)<br />

A(i,j)%elem = h+0.5<br />

CALL RANDOM_NUMBER(HARVEST=h)<br />

B(i,j)%elem = h-0.5<br />

END DO<br />

CALL RANDOM_NUMBER(HARVEST=h)<br />

c(i)%elem = h<br />

END DO<br />

FORALL (i=1:3)<br />

A(i,i)%elem = 2.0*SUM(ABS(A(i,:)%elem)) ! assicura la dominanza<br />

! diagonale forte<br />

Unity(i,i)%elem = 1.0 ! Unity e’ la matrice identica 3x3<br />

END FORALL<br />

AperB = A*B ! ris: A*B righe x colonne<br />

Aperc = A*c ! ris. A*c righe x colonne<br />

Inv_A = Unity/A ! ris: INV(A)*Unity = INV(A)<br />

cdivA = c/A ! ris: INV(A)*c<br />

dim=10<br />

PRINT 100, "Matrice A:"<br />

DO i=1,3

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

Saved successfully!

Ooh no, something went wrong!