Advertisement
Guest User

Untitled

a guest
Jul 28th, 2017
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.69 KB | None | 0 0
  1. det A = sum on i=1...N:(-1)**(i+1) a_i1 det ||A||_i1
  2.  
  3. integer, parameter :: rk= selected_real_kind(6)
  4. end module prec
  5.  
  6.  
  7. module lap
  8. use prec
  9. implicit none
  10.  
  11. contains
  12. recursive function det(a,n) result (d)
  13. real(kind=rk), intent(in), dimension(n,n) :: a
  14. real(kind=rk), dimension(n-1,n-1) :: b
  15. real(kind=rk) :: d
  16. integer ::i
  17. integer, intent(in)::n
  18.  
  19.  
  20.  
  21. if (size(a) > 4) then
  22. do i=1,n
  23. b(1:(i-1),:) = a(1:(i-1),:)
  24. b(i:n,:) = a((i+1):n,:)
  25. b(:,:) = a(:,2:n)
  26. d= ((-1)**(i+1))*a(i,1)*det(b,n)
  27. end do
  28. else
  29. d = a(1,1)*a(2,2)-a(1,2)*a(2,1)
  30.  
  31. end if
  32. end function det
  33. end module lap
  34.  
  35.  
  36.  
  37.  
  38. program sistema
  39.  
  40. b(1:(i-1),:) = a(1:(i-1),2:n)
  41. b(i:n,:) = a((i+1):n,2:n)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement