В следующей программе, если я изменил «L» (прочитайте нижнюю треугольную часть матрицы) на «U» (верхний треугольный вход) в zheev, Я обнаружил, что выходные собственные векторы различны. Кто-нибудь поможет?Получены различные собственные векторы для нижнего и верхнего входных сигналов в zheev в лапаке
program zheev_test
INTEGER N
PARAMETER (N = 4)
INTEGER LDA
PARAMETER (LDA = N)
INTEGER LWMAX
PARAMETER (LWMAX = 1000)
INTEGER INFO, LWORK
DOUBLE PRECISION W(N), RWORK(3*N-2)
COMPLEX*16 A(LDA, N), WORK(LWMAX),vect(n,n)
a(1,:)=[(9.14,0.00),(-4.37,-9.22),(-1.98,-1.72),(-8.96,-9.50)]
a(2,:)=[(-4.37,9.22),(-3.35,0.00),(2.25,-9.51),(2.57,2.40)]
a(3,:)=[(-1.98,1.72),(2.25,9.51),(-4.82,0.00),(-3.24,2.04)]
a(4,:)=[(-8.96,9.50),(2.57,-2.40),(-3.24,-2.04),(8.44,0.00)]
WRITE(*,*)'ZHEEV Example Program Results'
LWORK = -1
CALL ZHEEV('V', 'L', N, A, LDA, W, WORK, LWORK, RWORK,INFO)
LWORK = MIN(LWMAX, INT(WORK(1)))
CALL ZHEEV('V', 'L', N, A, LDA, W, WORK, LWORK, RWORK,INFO)
IF(info>0) stop 'The algorithm failed to compute eigenvalues.'
write(*,*) w
write(*,*) a(:,1)
end program
Интересное сочетание Fortran 2003 и некоторые старые 77 стиль. –