2

私は偉大なプログラマーには程遠いので、LAPACKE_dsyevd を使おうとしています。対角が 0 で非対角要素が 1 に等しい 2x2 対称行列の固有値と固有ベクトルを見つけることを目的とした次のコードを書きました。固有値は適切なものですが、返される固有ベクトルの 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;
}

4

0 に答える 0