Ell*_*ski 2 c++ matlab linear-algebra eigenvalue eigenvector
我需要计算一个大矩阵的特征值和特征向量(大约1000 * 1000甚至更多)。Matlab的工作速度非常快,但不能保证准确性。我需要它是非常准确的(大约1e-06错误是可以的)并且在合理的时间内(一两个小时可以)。
我的矩阵对称且稀疏。确切的值是:对角线,主对角线下方,对角线上方和对角线上的值。例:
我怎样才能做到这一点?C ++对我来说最方便。
MATLAB不保证准确性
我认为这种说法是不合理的。您说基于什么理由,您可以找到(比)MATLAB高度精炼的计算算法更准确的实现?
AND ...使用MATLAB的eig,不到半秒即可计算出以下内容:
%// Generate the input matrix
X = ones(1000);
A = triu(X, -1) + tril(X, 1) - X;
%// Compute eigenvalues
v = eig(A);
Run Code Online (Sandbox Code Playgroud)
很快就好!
我需要它非常准确(大约1e-06错误是可以的)
请记住,准确求解特征值与找到特征多项式的根有关。这个特定的1000x1000矩阵病态很 严重:
>> cond(A)
ans =
1.6551e+003
Run Code Online (Sandbox Code Playgroud)
一般的经验法则是,对于10 k的条件数,您可能会损失多达k位的精度(最重要的是,由于算术方法的精度下降,数值方法会损失精度)。
因此,在您的情况下,我希望结果的准确度可以达到10 -3的近似误差。