主题:很感激,很感动,能否再让我感动一次。矩阵特征值
有两个程序求矩阵特征值,这个是从网上搜到的,运行成功:
program main
use IMSL
implicit none
real :: A(3,3)=(/1,0,0,&
0,2,0,&
0,0,3 /)
real :: eigenvalue(3)
real :: eigenvector(3,3)
integer :: i
eigenvalue=eig(A,v=eigenvector)
do i=1,3
write(*,"('eigenvalue=',f5.2)")eigenvalue(i)
write(*,"('eigenvector=['3(f5.2'')']')")eigenvector(:,i)
end do
stop
end
下面这个是我根据自己的需求扩展的一个程序,有个问题:
program main
use imsl
real :: eigenvalue(8)
real :: eigenvector(8,8)
call abc
eigenvalue=eig(b,v=eigenvector)
do i=1,8
write(*,"('eigenvalue=',f5.2)")eigenvalue(i)
write(*,"('eigenvector=['8(f5.2'')']')")eigenvector(:,i)
end do
end
subroutine ABC
implicit none
real:: b(8,8)=0.0
real:: a(2,2)
integer:: i, j
a=reshape((/1,2,3,4/),(/2,2/))
do i=1,7,2
b(i:i+1,i:i+1)=a
end do
write(*,*) b
return
end subroutine
问题:Error: There is no matching specific function for this generic function reference. [EIG]
eigenvalue=eig(b,v=eigenvector)
说eig出错了,好像库函数里没有匹配的什么东西,如果出错,第一个程序为什么没提示呢?
请大侠们指点下了
program main
use IMSL
implicit none
real :: A(3,3)=(/1,0,0,&
0,2,0,&
0,0,3 /)
real :: eigenvalue(3)
real :: eigenvector(3,3)
integer :: i
eigenvalue=eig(A,v=eigenvector)
do i=1,3
write(*,"('eigenvalue=',f5.2)")eigenvalue(i)
write(*,"('eigenvector=['3(f5.2'')']')")eigenvector(:,i)
end do
stop
end
下面这个是我根据自己的需求扩展的一个程序,有个问题:
program main
use imsl
real :: eigenvalue(8)
real :: eigenvector(8,8)
call abc
eigenvalue=eig(b,v=eigenvector)
do i=1,8
write(*,"('eigenvalue=',f5.2)")eigenvalue(i)
write(*,"('eigenvector=['8(f5.2'')']')")eigenvector(:,i)
end do
end
subroutine ABC
implicit none
real:: b(8,8)=0.0
real:: a(2,2)
integer:: i, j
a=reshape((/1,2,3,4/),(/2,2/))
do i=1,7,2
b(i:i+1,i:i+1)=a
end do
write(*,*) b
return
end subroutine
问题:Error: There is no matching specific function for this generic function reference. [EIG]
eigenvalue=eig(b,v=eigenvector)
说eig出错了,好像库函数里没有匹配的什么东西,如果出错,第一个程序为什么没提示呢?
请大侠们指点下了