Академический Документы
Профессиональный Документы
Культура Документы
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
!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)
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
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
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
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
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!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