【发布时间】:2014-07-17 11:42:38
【问题描述】:
我有一个对称的三对角矩阵,我想计算它的特征值和特征向量。我正在使用 LAPACK dstevd 函数来执行此操作。我正在用 C 编码,所以我在代码顶部有以下行,所以我可以调用 fortran 函数:
extern "C" void dstevd_( char *jobz, int N, double d, double* e, double *z, int *ldz, int *work, int *lwork, int *iwork , int *liwork, int *info);
我需要特征向量,所以我需要设置 *z、*work 和 *iwork。根据 LAPACK 手册(Link),尺寸需要为: z:>= n*n,工作:>= 1 + 4*n + n**2,iwork:>= 3 + 5*n。
使用这些大小时,我收到错误消息说 dstevd_ 正在访问未在这些数组中分配的内存。它适用于小(n = 4)问题,但我遇到更大尺寸(n = 36)的问题。如果我增加 z 的大小,work 和 iwork 就可以了。
关于如何正确确定 z、work 和 iwork 所需尺寸的任何建议?
谢谢。
【问题讨论】:
标签: c lapack eigenvector eigenvalue