【发布时间】:2018-03-03 20:04:47
【问题描述】:
我正在尝试计算大小为3x3 的符号复矩阵M 的特征值。在某些情况下,eigenvals() 可以完美运行。例如以下代码:
import sympy as sp
kx = sp.symbols('kx')
x = 0.
M = sp.Matrix([[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]])
M[0, 0] = 1.
M[0, 1] = 2./3.
M[0, 2] = 2./3.
M[1, 0] = sp.exp(1j*kx) * 1./6. + x
M[1, 1] = sp.exp(1j*kx) * 2./3.
M[1, 2] = sp.exp(1j*kx) * -1./3.
M[2, 0] = sp.exp(-1j*kx) * 1./6.
M[2, 1] = sp.exp(-1j*kx) * -1./3.
M[2, 2] = sp.exp(-1j*kx) * 2./3.
dict_eig = M.eigenvals()
返回M 的 3 个正确复杂符号特征值。但是,当我设置x=1. 时,出现以下错误:
raise MatrixError("Could not calculate eigenvalues for {}".format(self))
我还尝试如下计算特征值:
lam = sp.symbols('lambda')
cp = sp.det(M - lam * sp.eye(3))
eigs = sp.solveset(cp, lam)
但无论如何它都会返回一个ConditionSet,即使eigenvals() 可以完成这项工作。
对于x 的任何值,有谁知道如何正确解决这个特征值问题?
【问题讨论】:
标签: python-2.7 sympy symbolic-math eigenvalue