链接已复制
2 回复数
I am using the following sequence of function calls to solve the problem K x = lambda Mx. K and M are stored in banded format.
I want only selected eigenvalues and eigenvectors.
(1)dpbstf (to compute the split Cholesky factorization)
(2) dsbgst ( to reduce to standard form C y = lambda y)
(3) dsbtrd (to reduce C to tridiagonal form T)
(4) dstebz ( compute selected eigen values of T)
(5) dstein ( compute selected eigen vectors)
(6) Don't find a routine to transform eigenvectors of T to that of C. 'dormtr' requires Q to be computed by 'dsytrd'
Am I missing something ? Any help would be greatly appreciated. Thanks.
I want only selected eigenvalues and eigenvectors.
(1)dpbstf (to compute the split Cholesky factorization)
(2) dsbgst ( to reduce to standard form C y = lambda y)
(3) dsbtrd (to reduce C to tridiagonal form T)
(4) dstebz ( compute selected eigen values of T)
(5) dstein ( compute selected eigen vectors)
(6) Don't find a routine to transform eigenvectors of T to that of C. 'dormtr' requires Q to be computed by 'dsytrd'
Am I missing something ? Any help would be greatly appreciated. Thanks.
Ithink that it's better to use DSBEVX for computing selected eigenvalues and eigenvectors of real band matrix C intead of steps 3-5. It should help you, if matrix C in your notations is a band matrix.
If you don't want to use this routine, you should use the folowingoperators
DO J = 1, M
CALL DCOPY( N, Z( 1, J ), 1, WORK( 1 ), 1 )
CALL DGEMV( 'N', N, N, ONE, Q, LDQ, WORK, 1, ZERO,
$ Z( 1, J ), 1 )
ENDDO
after the call to DSTEIN where M is thetotal number found,array Zis returned by DSTEIN (the 8th parameter for DSTEIN) and the first M columns of Z arethe eigenvector of T, array Q is returned by DSBTRD (the 9th parameter)and it containsthe orthonormal matrix Q such that Q**T * S* Q = T.
I hope it helps.