java 求方阵特征值,SymPy无法计算此矩阵的特征值

由于拉普拉斯算子是一个整数矩阵,让我们使用整数:

L = Matrix([[ 1, 0, 0, 0, -1, 0, 0, 0, 0, 0],

[ 0, 1, 0, 0, 0, -1, 0, 0, 0, 0],

[ 0, 0, 1, 0, 0, 0, 0, 0, -1, 0],

[ 0, 0, 0, 1, 0, 0, 0, 0, -1, 0],

[-1, 0, 0, 0, 1, 0, 0, 0, 0, 0],

[ 0, -1, 0, 0, 0, 3, 0, 0, -1, -1],

[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

[ 0, 0, 0, 0, 0, 0, 0, 1, 0, -1],

[ 0, 0, -1, -1, 0, -1, 0, 0, 3, 0],

[ 0, 0, 0, 0, 0, -1, 0, -1, 0, 2]])

计算 eigenvalues :

>>> L.eigenvals()

{0: 3, 1: 1, 2: 1}

这很奇怪,因为矩阵是10乘10,而不是5乘5 .

我试图计算Jordan正常形式,但无法做到,因为函数 jordan_form 产生了错误消息 IndexError: list index out of range .

计算 characteristic polynomial :

>>> s = Symbol('s')

>>> p = (s * eye(10) - L).det()

>>> p

s**10 - 14*s**9 + 77*s**8 - 214*s**7 + 321*s**6 - 256*s**5 + 99*s**4 - 14*s**3

注意,最低度的单项式是立方的 . 这使我们得出结论:特征值0的多重性为3,因此,该图是 not connected .

让我们试着找到特征多项式的 roots :

>>> solve(p,s)

[0, 0, 0, 1, 2, CRootOf(s**5 - 11*s**4 + 42*s**3 - 66*s**2 + 39*s - 7, 0), CRootOf(s**5 - 11*s**4 + 42*s**3 - 66*s**2 + 39*s - 7, 1), CRootOf(s**5 - 11*s**4 + 42*s**3 - 66*s**2 + 39*s - 7, 2), CRootOf(s**5 - 11*s**4 + 42*s**3 - 66*s**2 + 39*s - 7, 3), CRootOf(s**5 - 11*s**4 + 42*s**3 - 66*s**2 + 39*s - 7, 4)]

请注意,实际上只发现了5个根( eigenvals 也只产生了5个特征值) . 5个缺失的根是quintic s**5 - 11*s**4 + 42*s**3 - 66*s**2 + 39*s - 7 的根源 .

自19世纪以来就已经知道,并非所有5级(或更高级)的多项式都具有可以使用算术运算和自由基表达的根 . 因此,我们可能会要求SymPy做 impossible . 更好地使用NumPy来计算10个特征值的近似值 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值