Il seguente codice fornisce la matrice di identità di qualsiasi dimensione che l'utente desidera che sia:
program identitymatrix
real, dimension(:, :), allocatable :: I
character:: fmt*8
integer :: ms, j
print*,'the size of the matrix is?'
read*,ms
allocate(I(ms,ms))
I = 0 ! Initialize the array.
forall(j = 1:ms) I(j,j) = 1 ! Set the diagonal.
! I is the identity matrix, let's show it:
write (fmt, '(A,I2,A)') '(', ms, 'F6.2)'
! if you consider to have used the (row, col) convention,
! the following will print the transposed matrix (col, row)
! but I' = I, so it's not important here
write (*, fmt) I(:,:)
deallocate(I)
end program identitymatrix (the end of the code )
Sono un po 'confuso riguardo a questi due pezzi di codice?
write (fmt, '(A,I2,A)') '(', ms, 'F6.2)'
write (*, fmt) I(:,:)
Che cosa fa esattamente (A,I2,A)
?