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.

360 Array Processing<br />

ELSE<br />

m(k,k:n+1) = m(k,k:n+1)/m(k,k)<br />

m(k+1:n,k+1:n+1) = m(k+1:n,k+1:n+1) - &<br />

SPREAD(m(k,k+1:n+1),1,n-k)*SPREAD(m(k+1:n,k),2,n-k+1)<br />

END IF<br />

END DO triang_loop<br />

! Fase di sostituzione all’indietro<br />

IF (error) THEN<br />

x = 0.0<br />

ELSE<br />

DO k=n,1,-1<br />

x(k) = m(k,n+1)-SUM(m(k,k+1:n)*x(k+1:n))<br />

END DO<br />

END IF<br />

DEALLOCATE(m,temp_row)<br />

END IF<br />

END SUBROUTINE solve_linear_equations<br />

END MODULE solve_module<br />

PROGRAM p_solve<br />

USE solve_module<br />

REAL, DIMENSION(3,3) :: A<br />

REAL, DIMENSION(3) :: b, x<br />

INTEGER :: i, j<br />

LOGICAL :: error<br />

! costruzione di una matrice di coefficienti di prova<br />

DO i=1,3<br />

DO j=1,3<br />

a(i,j) = i+j<br />

END DO<br />

END DO<br />

A(3,3) = -A(3,3)<br />

! costruzione della colonna dei termini noti<br />

b = (/20,26,-4/)<br />

CALL solve_linear_equations(A,x,b,error)<br />

IF (error==.FALSE.) THEN<br />

PRINT*, "La soluzione e’: ", x<br />

ELSE<br />

PRINT*, "Errore nella matrice dei coefficienti"<br />

END IF<br />

END PROGRAM p_solve

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

Saved successfully!

Ooh no, something went wrong!