我想计算一些大的实对称矩阵的本征系统,发现例程DSYEVR应该符合我的需要。
dsyevr (JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, IWORK, LIWORK, INFO)
在包含并测试此例程时,我注意到参数isuppz
是一个长度为2*m
的整数数组,其中m
指定计算出的特征值的数量(可能会根据具体值而变化)输入数据)。
根据文档,数组isuppz
指定了特征向量z
数组中非零元素的位置。即特别是,i
特征向量在位置isuppz(2*i-1)
和isuppz(2*i)
之间具有非零元素。
现在,我遇到了问题,这与我的观察结果不符。例如。在将特征系统计算到大小为N=400
的示例系统时,根据isuppz
,第二特征向量仅具有位置349
和400
之间的非零元素。看一下特征向量,我可以看到,事实显然并非如此,与Mathematica
相比,我可以清楚地看到,情况也不应如此。
实际上,来自DSYEVR
的本征系统原则上与Mathematica
计算的本征系统相同。结果,我认为一般没有任何错误。
那么,参数isuppz
的实际含义是什么?