Quale versione del fortran utilizzi?
A cura di Giuseppe Ciaburro
Pubblicato il 25/04/2007
Calcola il determinante di una matrice test con il metodo di Laplace
program determinante
! Calcola il determinante di una matrice test con il metodo di Laplace
implicit none
real(8), allocatable, dimension(:,:) :: a
real(8) :: d,det
integer :: n,i,j
write(*,'(a)',advance='no') "Inserisci la dimensione della matrice "
read (*,*) n
allocate(a(n,n))
! Inizializza la matrice
a=0.d0
do i=1,n
do j=1,n
if (i==j) a(i,j)=2.d0
if (abs(i-j)==1) a(i,j)=1.d0
end do
end do
! Calcola il determinante
d=det(n,a)
write(*,*) "Il determinante e` ",d
end program determinante
recursive function det(n,a) result(risultato)
implicit none
integer :: n,i
real(8), dimension(n,n) :: a
real(8), dimension(n-1,n-1) :: b
real(8) :: s,risultato
if (n==1) then
s=a(1,1)
else
s=0.d0
do i=1,n
b(1:n-1,1:i-1)=a(2:n,1:i-1)
b(1:n-1,i:n-1)=a(2:n,i+1:n)
s=s+(-1)**(i+1)*a(1,i)*det(n-1,b)
end do
end if
risultato=s
end function det