Questo sito contribuisce alla audience di

Esercizio sugli array nel Fortran 90

Un esempio dettagliatamente descritto su come utilizzare gli array nelò Fortran 90

fortran 90,intel fortran,visual fortran,compilatore fortran

Il trattamento di Matrici e le operazioni sugli array hanno subito un cambiamento completo nel nuovo standard Fortran 90. In Fortran 90, è possibile considerare una matrice come un singolo oggetto. Questo permette di utilizzare le matrice come valori di espressioni come C = A + B senza la necessità di fare i loop che sono necessari nel Fortran 77 per elaborare gli elementi delle matrici uno alla volta.

Anche se tali dichiarazioni sono convenienti e offrono una forma più naturale di espressione, sono altrettanto importanti in quanto sfruttano le alte velocità di calcolo parallelo e dei calcolatori vettoriali. La maggior parte delle funzioni intrinseche possono agire in modo elementare sugli array, così come gli operatori intrinseci.

Le sezioni di una matrice sono ottenute utilizzando una sintassi simile a Matlab. A (:, i) è la colonna esima di A. Il : rappresenta tutti gli elementi nella misura della dimensione particolare. A (2:4, 3:5) è la matrice costituita dalla 2 alla 4 riga e colonne da 3 a 5 di A. Un passo può anche essere specificato, ottenendo un effetto simile al passaggio di un ciclo do. Per esempio, A (2:10:2, 2:10) è la matrice ottenuta dalle righe 2, 4, 6, 8 e 10 e dalle colonne che vanno dalla 2 alla 10 di A.

Programma d’esempio

program MatrixVector
implicit none
integer, parameter :: N = 3

real, dimension( N, N ) :: A
real, dimension( N ) :: b, c

! Fill A and b with random entries.
call random_number( A )
call random_number( b )

! Compute the matrix-vector product, A*b.
c = matrixVectorMultiply( A, b )

print *, ‘The matrix-vector product is ‘, c

contains

function matrixVectorMultiply( A, b ) result( c )
implicit none

! Assume the shape of A and b.
real, dimension( :, : ), intent( in ) :: A
real, dimension( : ), intent( in ) :: b
real, dimension( size( b ) ) :: c

integer N
integer i

N = size( b )

c = 0.0

do i = 1, N
c = c + b( i ) * A( :, i )
end do
end function matrixVectorMultiply

end program MatrixVector

Link correlati all’argomento

- I compilatori Fortran

- Programmare con Fortran

- Elementi di calcolo numerico con il Fortran

- Esercizi sul Fortran 90

Link correlati