Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
7222 Discussions

dsytrd & dsteqr - How to properly computing all eigenvalues and eigenvectors?

zbigniew_g
Beginner
840 Views
I am beginner andI tried to test dsteqr (?steqr) for computing eigenvalues and eigenvectors. I previously tried to reduce symmetric matrix to tridiagonal formusing dsytrd (?sytrd), but the result does not looks good. How to compute eigenvalues and eigenvectors for matrix (3*3) like eg. A[9] = {1, 2, 3, 2, 5, 6, 3, 6, 9}? Can somebody help me? Thanks for every help! Regards, Zbigniew
0 Kudos
4 Replies
Sergey_K_Intel1
Employee
840 Views
I'd recommend to use dsyev routine for computing all eigenvalues and eigenvectors of symmetric matrices. Here is an C example

#include

"mkl_lapack.h"

int

main(){

int m=3;

double a[9] = {294.0, -180.0, 108.0, -180.0, -25.0, 240.0, 108.0, 240.0, 231.0};

char jobz='v', uplo='l';

int info, n=3, lwork=18, i, j;

double w[3], work[18];

dsyev(&jobz, &uplo, &n, a, &n, w, work, &lwork, &info);

printf(" Eigenvalues computed ");

for(i=0; i<3; i++) {

printf("%.5f ", w);

};

}

The input/output arraya if jobz= 'V' andinfo = 0, contains the orthonormal eigenvectors of the matrix A. You are not able to use dsteqr for the matrix given by yousince dsteqr is only for tridiagonal matrices and accepts onlythe main and subdiagonals as input parameters. So you have to use the following lapack routines dsytrd, dorgtr and dsteqr for solving the full eigenvalue problemfor dense symmetric matrix as it isimplemented in dsyev routine. Besides dsyev routine is doing a scaling of input matrix if it is necessary to get thehigh accuracy.

0 Kudos
zbigniew_g
Beginner
840 Views
Thank You very much for help. Zbigniew
0 Kudos
pizarro_fernando
Beginner
840 Views
Hi Zbigniew,

I need to do exactly the same as you, and the example is excelent, my problem is in the compilation process, I am linking the wrong libraries (using MSVC 8), can you tell me please, which files.lib are you including to compile the example....

thanks in advances...

Fernando.

So far I got: error LNK2019: unresolved external symbol _omp_in_parallel referenced in function _MKL_Get_Max_Threads
0 Kudos
Andrey_G_Intel2
Employee
840 Views

Fernando,

I think, you forgot to link libguide40 (or libguide) to your project.

Andrey

0 Kudos
Reply