gpt4 book ai didi

c++ - C++的特征值计算错误的特征值

转载 作者:行者123 更新时间:2023-11-30 01:07:34 25 4
gpt4 key购买 nike

所以我在代码块中使用 C++ 的 Eigen 来计算我的矩阵的特征值。处理此问题的代码的具体部分如下:-

EigenSolver<MatrixXd> b(B,false);
cout<<" Eigen values are: \n "<<b.eigenvalues()<<"\n";

我一直遇到的问题是,为我的矩阵 B 计算的特征值之一与我在 calculator.vhex.net 上找到的实际特征值相去甚远。

例如对于矩阵

1 0 0 x

0 1 x 0

0 x 1 y

x 0 y 1

其中 x = -1/sqrt(2) 和 y = -0.5 ,特征值为 0、0.5、1.5 和 2。

但是,我的代码将它们计算为 -4.25e-016、0.5、1.5 和 2。

我还对一个本应具有特征值 4e-06 的 5x5 矩阵进行了尝试,但代码将其计算为 1.4413e-017 。

这可能是什么原因?它们是近似值吗?我的猜测是内存问题,2 的平方根的 double 类型值不会完全等于 2 的平方根,但我不确定这一点。

有什么可能解决这个问题?

最佳答案

当矩阵接近奇异时,寻找特征值可能很困难,这用 0 特征值表示。您不应该期望从数值解中获得精确的特征值 0,因为它只会在某些数值近似值附近开始失效时表现良好。

关于c++ - C++的特征值计算错误的特征值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44376122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com