Вы находитесь на странице: 1из 7

program mincua

implicit none
real*8,dimension(:),allocatable:: x
real*8,dimension(:),allocatable:: y
real*8 :: q
integer :: n
integer,dimension(1,2)::v
real*8,dimension(:),allocatable:: z
real*8,dimension(:,:),allocatable:: A
real*8,dimension(:,:),allocatable:: B
real*8,dimension(:,:),allocatable:: VV

! INTERFACE FUNCION MATRIZ ADJUNTA

interface
!function determinante(A)
! real*8,allocatable,intent(inout),dimension(:,:)
::A
! real*8 :: determinante
!end function determinante

function adjunta(Ai,d,F)
real*8,allocatable,dimension(:,:) :: adjunta
real*8,allocatable,intent(in),dimension(:,:) :: Ai
real*8 :: d
real*8,allocatable,dimension(:,:) :: F
!integer ::i
!integer ::n
end function adjunta

end interface

!xy
!y!
!v=shape(x)
!n=v(1,2)
!do i=1,n
!z(i,1)=sin(x(i))
!end do
!do i=1,n
!z(i,2)=cos(x(i))
!end do
!a=

A=reshape((/2,1,2,5,3,3,3,3,-4,4,40,2,5,2,9,1/),(/4,4/))
write(*,*),A(1,:)
write(*,*),A(2,:)
write(*,*),A(3,:)
write(*,*),A(4,:)

n=size(A,dim=1)

q=determinante(A)

VV=adjunta(B,determinante,C)

WRITE(*,*) " "


!wrgrite(*,*),VV(1,:)
write(*,*),VV(2,:)
write(*,*),VV(3,:)
write(*,*),VV(4,:)

WRITE(*,*) " "


write(*,*) q

contains

!FUNCION DETERMINANTE

function determinante(A)
real*8,allocatable,intent(in),dimension(:,:) ::A

real*8,allocatable,dimension(:,:) ::B
integer ::i
integer ::n
integer :: k
integer :: j
integer :: r
real*8 :: determinante
real*8 :: m

b=a
n=size(A,dim=1)

do i=1,n-1
do k=i+1,n
m=(b(k,i)/b(i,i))
do j=i+1,n
b(k,j)=(b(k,j)-(m*(b(i,j))))
end do
b(k,i)=0
end do
end do

determinante=1.

do r=1,n
determinante=determinante*(b(i,i))
end do

return
end function determinante

!FUNCION COEFICUENTE TRIANGULO

function C(i,j,n,A)
real*8,allocatable,intent(in),dimension(:,:) :: A
real*8,allocatable,dimension(:,:):: C
real*8,allocatable,dimension(:,:):: u

integer,intent(in) ::i
integer,intent(in) ::j
integer,intent(in) ::n

integer ::k
integer ::w
integer ::p
integer ::q

p=1
q=1
!deallocate (C(n-1,n-1))
allocate (C(n-1,n-1))

do k=1,n
do w=1,n
if (((k.ne.i).and.(w.ne.j))) then
C(p,q)=A(k,w)
q=q+1
if(q.eq.n) then
p=p+1
q=1
end if
end if
end do
end do

u=C
deallocate (C)
C=U

return
end function C

end program

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1

!!!!!!!!!!!!!! EXTERNO
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!11

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!FUNCION MATRIZ ADJUNTA

function adjunta(Ai,d,Funt)
real*8,allocatable,intent(in),dimension(:,:) :: Ai
real*8,allocatable,dimension(:,:) :: adjunta
!real*8,allocatable,dimension(:,:) :: funt

!real*8 :: d
integer ::i
integer :: j
integer ::n
integer :: cont=1

interface

function d(A)

real*8,allocatable,dimension(:,:),intent(in)::A !inout
!real*8,allocatable,dimension(:,:)::A !inout
!real*8,intent(out) :: d
real*8 :: d
end function d
function Funt(i,j,n,A)
!
real*8,allocatable,dimension(:,:),intent(in):: A
real*8,allocatable,dimension(:,:):: A
integer ,intent(in) ::i
integer,intent(in) ::j
integer,intent(in) ::n

!real*8,allocatable,intent(out),dimension(:,:) :: Funt
real*8,allocatable,dimension(:,:) :: FunY
end function Funt

end interface

!adjunta=Ai
n= size(Ai,dim=1)

do i=1,n
do j=1,n
if (cont.eq.1) then
adjunta(i,j)=(-1)*(d(Funt(i,j,n,Ai)))
cont=cont+1
else
adjunta(i,j)=(1)*(d(Funt(i,j,n,Ai)))
cont=1
end if
WRITE(*,*) "ADJUNTA:"
WRITE(*,*) ADJUNTA
end do
end do

return

end function adjunta

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!function C(i,j,n,A)
! real*8,allocatable,intent(in),dimension(:,:) :: A
! real*8,allocatable,intent(out),dimension(:,:) ::
C
! integer,intent(in) ::i
! integer ::k
! integer ::w
! integer ::p
! integer ::q
!
! p=1
! q=1
!
! do k=1,n
! do w=1,n
! if (((k.ne.i).and.(w.ne.j))) then
! C(p,q)=A(k,w)
! q=q+1
! if(q.eq.n) then
! p=p+1
! q=1
! end if
! end if
! end do
! end do
!
! return
!end function C

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1

!function determinante(A)
! real*8,allocatable,intent(inout),dimension(:,:) ::A
! integer ::i
! integer ::n
! integer :: k
! integer :: j
! real*8 :: determinante
! real*8 :: m

! n=size(A,dim=1)

! do i=1,n-1
! do k=i+1,n
! m=(A(k,i)/A(i,i))
! do j=i+1,n
! A(k,j)=(A(k,j)-(m*(A(i,j))))
! end do
! A(k,i)=0
! end do
! end do
! determinante=1.
! do i=1,n
! determinante=determinante*A(i,i)
! end do
!
! return
!end function determinante

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11

Вам также может понравиться