我有一个符号矩阵,我想对角化它的特征值。我使用了SymPy diagonalize
函数,但是我的代码即使运行了两个小时也没有完成。没有错误,它只是没有终止。This example使用类似的协议,但立即完成。有人知道为什么这不能完成吗?在
import sympy
from sympy import Symbol
from sympy import *
J1 = Symbol('J1')
J2= Symbol('J2')
S1 = Symbol('S1')
S2 = Symbol('S2')
S3 = Symbol('S3')
S4 = Symbol('S4')
Alistmatrix=sympy.Matrix([[0, -2*J1*S1*S2, -J2*S1*S3, 0],
[-2*J1*S1*S2, 0, -2*J1*S2*S3, -J2*S2*S4],
[-J2*S1*S3, -2*J1*S2*S3, 0, -2*J1*S3*S4],
[0, -J2*S2*S4, -2*J1*S3*S4, 0]])
print (Alistmatrix.eigenvects())
print (Alistmatrix.eigenvals())
对角化2×2矩阵和4×4矩阵在复杂度上有很大的差别。实际上,
Alistmatrix.eigenvals()
返回四个特征值,其中第一个特征值是:滚动到右侧以完全欣赏此公式。我无法将
eigenvals
的整个输出粘贴到这里,因为它超过了堆栈溢出后的限制。在所以
eigenvects()
随后会窒息,这就不足为奇了,因为它必须为这个复杂度的特征值找到特征向量,这些特征值是分段的。在也许在这里正确的做法是退一步问:如果一个38000个字符的特征值公式是伴随着200000个字符的特征向量公式,你会怎么做?有些问题不是象征性地解决的。在
相关问题 更多 >
编程相关推荐