C++ LAPACKE_dsyevd返回错误的特征向量

C++ LAPACKE_dsyevd返回错误的特征向量,c++,lapacke,C++,Lapacke,我远远不是一个伟大的程序员,我正在尝试使用拉帕克·德斯耶夫。我编写了以下代码,旨在找出一个2x2对称矩阵的特征值和特征向量,该矩阵的对角线由0组成,非对角线元素等于1。特征值是好的,但只有一个返回特征向量是好的。我尝试了几个参数组合,但没有成功。。。有人能告诉我怎么了吗 #include <stdlib.h> #include <stdio.h> #include <iostream> #include <lapacke.h> using na

我远远不是一个伟大的程序员,我正在尝试使用拉帕克·德斯耶夫。我编写了以下代码,旨在找出一个2x2对称矩阵的特征值和特征向量,该矩阵的对角线由0组成,非对角线元素等于1。特征值是好的,但只有一个返回特征向量是好的。我尝试了几个参数组合,但没有成功。。。有人能告诉我怎么了吗

#include <stdlib.h>
#include <stdio.h>
#include <iostream>

#include <lapacke.h>

using namespace std;

int main() {

    int n, lda, info,i,j;
    char jobz, uplo;

    n=2;
    lda=n*(n+1)/2;
    jobz='V';
    uplo='U';

    //double a[lda];
    double a[n*n];

    a[0]=0 ; a[1]=1; a[2]=0; a[3]=1;

    double w[n];

   info = LAPACKE_dsyevd (LAPACK_ROW_MAJOR, jobz, uplo, n, a, lda, w);

   cout << " Eigenvalues: ";
   for(i=0; i< n ;++i)
        cout << w[i] << " ";
   cout << endl<<endl;

   cout << " Eigenvectors:";
   for(i=0; i< n ; ++i)
   {
       for (j=0;j<n; j++)
            cout << a[i+n*j] << " ";
       cout <<endl;
   }

    return 0;
}

#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
int n,lda,info,i,j;
查·乔布兹,uplo;
n=2;
lda=n*(n+1)/2;
jobz='V';
uplo='U';
//双a[lda];
双a[n*n];
[0]=0;a[1]=1;a[2]=0;a[3]=1;
双w[n];
info=LAPACKE_dsyevd(LAPACK_ROW_MAJOR,jobz,uplo,n,a,lda,w);
库特