我试图写一个程序来处理矩阵,但当涉及到特征值时,我看到了这个错误: “举起母狮来( Symphy.Matrix.common.Matrix错误:无法计算矩阵的特征值([[5,-5,-3,2,-7],-2,-5,0,2,1],-2,-7,-5,-2,-6],[7,10,3,9,-2],[4,-10,3,-8,-4])” 我用Wolfram计算了这些,似乎有些特征值是复杂的,也许是这样? 代码如下:
from sympy import *
A = Matrix([[5, -5, -3, 2, -7], [-2, -5, 0, 2, 1], [-2, -7, -5, -2, -6], [7, 10, 3, 9, -2], [4, -10, 3, -8, -4]])
A.eigenvals()
显然,计算characteristic polynomial(也可以通过矩阵对象的charpoly method得到)然后找到根将起作用:
结果是:
注意:我认为eigenvals()方法必须发生的是,在某些地方有一些逻辑猜测charpoly的域是
Z[X]
,而实际上它是C[X]
(可能是因为A
的所有元素都来自Z
)。 最有可能是在_eigenvals_dict或_eigenvals_list中。另外error_when_incomplete
参数在查找at the code时对我来说有点不寻常,特别是因为默认情况下它是True
SymPy正试图精确地计算特征值,但由于它不能表示5次特征多项式的根,所以不能。IMHO,这种行为应该得到改进(https://github.com/sympy/sympy/issues/20582),但是现在,如果您希望得到浮点特征值,可以先在矩阵上调用
evalf
相关问题 更多 >
编程相关推荐