用SymPy对角化符号矩阵

2024-05-28 21:08:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个符号矩阵,我想对角化它的特征值。我使用了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())

Tags: fromimports3符号矩阵symbols4print
1条回答
网友
1楼 · 发布于 2024-05-28 21:08:15

对角化2×2矩阵和4×4矩阵在复杂度上有很大的差别。实际上,Alistmatrix.eigenvals()返回四个特征值,其中第一个特征值是:

{Piecewise((-sqrt(8*J1**2*S1**2*S2**2/3 + 8*J1**2*S2**2*S3**2/3 + 8*J1**2*S3**2*S4**2/3 + 2*J2**2*S1**2*S3**2/3 + 2*J2**2*S2**2*S4**2/3 - 2*(-(8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/8 + (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/3 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/108)**(1/3))/2 + sqrt(16*J1**2*S1**2*S2**2/3 + 16*J1**2*S2**2*S3**2/3 + 16*J1**2*S3**2*S4**2/3 + 4*J2**2*S1**2*S3**2/3 + 4*J2**2*S2**2*S4**2/3 + (16*J1**2*J2*S1**2*S2**2*S3**2 + 16*J1**2*J2*S2**2*S3**2*S4**2)/sqrt(8*J1**2*S1**2*S2**2/3 + 8*J1**2*S2**2*S3**2/3 + 8*J1**2*S3**2*S4**2/3 + 2*J2**2*S1**2*S3**2/3 + 2*J2**2*S2**2*S4**2/3 - 2*(-(8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/8 + (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/3 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/108)**(1/3)) + 2*(-(8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/8 + (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/3 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/108)**(1/3))/2, Eq(-16*J1**4*S1**2*S2**2*S3**2*S4**2 + 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 - J2**4*S1**2*S2**2*S3**2*S4**2 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**2/12, 0)), (-sqrt(8*J1**2*S1**2*S2**2/3 + 8*J1**2*S2**2*S3**2/3 + 8*J1**2*S3**2*S4**2/3 + 2*J2**2*S1**2*S3**2/3 + 2*J2**2*S2**2*S4**2/3 - 2*(-16*J1**4*S1**2*S2**2*S3**2*S4**2 + 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 - J2**4*S1**2*S2**2*S3**2*S4**2 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**2/12)/(3*((8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/16 + sqrt((-(8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/8 + (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/3 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/108)**2/4 + (-16*J1**4*S1**2*S2**2*S3**2*S4**2 + 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 - J2**4*S1**2*S2**2*S3**2*S4**2 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**2/12)**3/27) - (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/6 + (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/216)**(1/3)) + 2*((8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/16 + sqrt((-(8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/8 + (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/3 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/108)**2/4 + (-16*J1**4*S1**2*S2**2*S3**2*S4**2 + 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 - J2**4*S1**2*S2**2*S3**2*S4**2 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**2/12)**3/27) - (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/6 + (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/216)**(1/3))/2 + sqrt(16*J1**2*S1**2*S2**2/3 + 16*J1**2*S2**2*S3**2/3 + 16*J1**2*S3**2*S4**2/3 + 4*J2**2*S1**2*S3**2/3 + 4*J2**2*S2**2*S4**2/3 + (16*J1**2*J2*S1**2*S2**2*S3**2 + 16*J1**2*J2*S2**2*S3**2*S4**2)/sqrt(8*J1**2*S1**2*S2**2/3 + 8*J1**2*S2**2*S3**2/3 + 8*J1**2*S3**2*S4**2/3 + 2*J2**2*S1**2*S3**2/3 + 2*J2**2*S2**2*S4**2/3 - 2*(-16*J1**4*S1**2*S2**2*S3**2*S4**2 + 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 - J2**4*S1**2*S2**2*S3**2*S4**2 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**2/12)/(3*((8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/16 + sqrt((-(8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/8 + (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/3 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/108)**2/4 + (-16*J1**4*S1**2*S2**2*S3**2*S4**2 + 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 - J2**4*S1**2*S2**2*S3**2*S4**2 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**2/12)**3/27) - (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/6 + (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/216)**(1/3)) + 2*((8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/16 + sqrt((-(8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/8 + (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/3 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/108)**2/4 + (-16*J1**4*S1**2*S2**2*S3**2*S4**2 + 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 - J2**4*S1**2*S2**2*S3**2*S4**2 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**2/12)**3/27) - (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/6 + (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/216)**(1/3)) + 2*(-16*J1**4*S1**2*S2**2*S3**2*S4**2 + 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 - J2**4*S1**2*S2**2*S3**2*S4**2 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**2/12)/(3*((8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/16 + sqrt((-(8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/8 + (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/3 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/108)**2/4 + (-16*J1**4*S1**2*S2**2*S3**2*S4**2 + 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 - J2**4*S1**2*S2**2*S3**2*S4**2 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**2/12)**3/27) - (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/6 + (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/216)**(1/3)) - 2*((8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/16 + sqrt((-(8*J1**2*J2*S1**2*S2**2*S3**2 + 8*J1**2*J2*S2**2*S3**2*S4**2)**2/8 + (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/3 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/108)**2/4 + (-16*J1**4*S1**2*S2**2*S3**2*S4**2 + 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 - J2**4*S1**2*S2**2*S3**2*S4**2 - (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**2/12)**3/27) - (16*J1**4*S1**2*S2**2*S3**2*S4**2 - 8*J1**2*J2**2*S1**2*S2**2*S3**2*S4**2 + J2**4*S1**2*S2**2*S3**2*S4**2)*(-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)/6 + (-4*J1**2*S1**2*S2**2 - 4*J1**2*S2**2*S3**2 - 4*J1**2*S3**2*S4**2 - J2**2*S1**2*S3**2 - J2**2*S2**2*S4**2)**3/216)**(1/3))/2, True)): 1, ...

滚动到右侧以完全欣赏此公式。我无法将eigenvals的整个输出粘贴到这里,因为它超过了堆栈溢出后的限制。在

所以eigenvects()随后会窒息,这就不足为奇了,因为它必须为这个复杂度的特征值找到特征向量,这些特征值是分段的。在

也许在这里正确的做法是退一步问:如果一个38000个字符的特征值公式是伴随着200000个字符的特征向量公式,你会怎么做?有些问题不是象征性地解决的。在

相关问题 更多 >

    热门问题