Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LAPACK,dgeev_u给出了随机矩阵的错误特征向量_C_Lapack - Fatal编程技术网

LAPACK,dgeev_u给出了随机矩阵的错误特征向量

LAPACK,dgeev_u给出了随机矩阵的错误特征向量,c,lapack,C,Lapack,我有以下代码用于计算C中随机矩阵的特征向量(左和右)(使用gcc编译器): #包括 #包括 #包括 int main() { 双A[6][6]={{0.2,200000,0.2000000,0.000000,0.200000,0.200000}, {0.200000,0.000000,0.000000,0.000000,0.000000,0.800000}, {0.200000,0.000000,0.000000,0.800000,0.000000,0.000000}, {0.200000,0

我有以下代码用于计算C中随机矩阵的特征向量(左和右)(使用gcc编译器):

#包括
#包括
#包括
int main()
{
双A[6][6]={{0.2,200000,0.2000000,0.000000,0.200000,0.200000},
{0.200000,0.000000,0.000000,0.000000,0.000000,0.800000},
{0.200000,0.000000,0.000000,0.800000,0.000000,0.000000},
{0.200000,0.000000,0.400000,0.000000,0.400000,0.000000},
{0.200000,0.000000,0.000000,0.800000,0.000000,0.000000},
{0.200000,0.800000,0.000000,0.000000,0.000000,0.000000}};
int n=6;
char Lchar='V';
charrchar='V';
double*eigReal=(double*)malloc(n*sizeof(double*));
double*eigImag=(double*)malloc(n*sizeof(double*);
双vl[6][6],vr[6][6];
int一=1,二=6;
int lwork=6*n;
双*工作=(双*)malloc(lwork*sizeof(双*);
国际信息;
艾格瑞尔、艾格瑞尔、艾吉玛格、艾格瑞尔、艾奇玛,
vl和2,vr和2,
工作、工作和信息);

对于(int i=0;iAt快速浏览一下,我建议查看
a[6][6]
是如何存储在内存中的,以及LAPACK期望的内容。例如,LAPACK通常使用列主存储,而C/C++通常使用行主存储(尽管更改存储矩阵的方式非常简单)。可能是你在计算A^T的特征值,这可以解释为什么你的特征向量被转置。免责声明:我没有检查你到底做了什么,只是一个想法。@Qubit我认为左特征向量和右特征向量都考虑到了这一点。它们都是aor A^T的右特征向量或左特征向量。同样,作为一个随机矩阵,我希望有一个column或一行求和为1,这在任何行或列中都不会发生。LAPACK将始终返回归一化的特征向量,因此平方和为1。@量子比特似乎是正确的。让我再研究一下。Thnaks。@Qubit您好!我的初步调查表明您是正确的,尽管我不确定它到底正确到什么程度是由于内存导致数组出现问题。所以,如果您愿意,可以写一个答案,我将投票并接受