.eigenvals создает новую переменную

Я вычисляю собственные значения матрицы с помощью функции .eigenvals(). Когда я делаю это для своей матрицы, в решении появляется новая переменная, которую я никогда не объявлял, и я не знаю, откуда она взялась, и я не ожидаю, что это произойдет, но она определенно влияет на решение. У меня проблема с numpy и sympy. Вот мой код для sympy:

from sympy import *

D,Bm,Bp,Bz,l=symbols('D Bm Bp Bz l')
H=Matrix(([D+Bz,Bm,0],[Bp,0,Bm],[0,Bp,D-Bz]))
ev=H.eigenvals()
sol=ev.keys()

print sol[0] 
print
print sol[1]
print
print sol[2]

Решения выглядят вот так, с этим странным «я» внутри. Когда я хочу использовать вычисленные собственные значения, я должен определить, что такое «я», иначе это не решит мои формулы.

2*D/3 + (-2*Bm*Bp/3 - Bz**2/3 - D**2/9)/(Bm*Bp*D - 8*D**3/27 + D*(-2*Bm*Bp - Bz**2 + D**2)/3 + sqrt((-2*Bm*Bp/3 - Bz**2/3 - D**2/9)**3 + (2*Bm*Bp*D - 16*D**3/27 + 2*D*(-2*Bm*Bp - Bz**2 + D**2)/3)**2/4))**(1/3) - (Bm*Bp*D - 8*D**3/27 + D*(-2*Bm*Bp - Bz**2 + D**2)/3 + sqrt((-2*Bm*Bp/3 - Bz**2/3 - D**2/9)**3 + (2*Bm*Bp*D - 16*D**3/27 + 2*D*(-2*Bm*Bp - Bz**2 + D**2)/3)**2/4))**(1/3)

2*D/3 + (-2*Bm*Bp/3 - Bz**2/3 - D**2/9)/((-1/2 - sqrt(3)*I/2)*(Bm*Bp*D - 8*D**3/27 + D*(-2*Bm*Bp - Bz**2 + D**2)/3 + sqrt((-2*Bm*Bp/3 - Bz**2/3 - D**2/9)**3 + (2*Bm*Bp*D - 16*D**3/27 + 2*D*(-2*Bm*Bp - Bz**2 + D**2)/3)**2/4))**(1/3)) - (-1/2 - sqrt(3)*I/2)*(Bm*Bp*D - 8*D**3/27 + D*(-2*Bm*Bp - Bz**2 + D**2)/3 + sqrt((-2*Bm*Bp/3 - Bz**2/3 - D**2/9)**3 + (2*Bm*Bp*D - 16*D**3/27 + 2*D*(-2*Bm*Bp - Bz**2 + D**2)/3)**2/4))**(1/3)

2*D/3 + (-2*Bm*Bp/3 - Bz**2/3 - D**2/9)/((-1/2 + sqrt(3)*I/2)*(Bm*Bp*D - 8*D**3/27 + D*(-2*Bm*Bp - Bz**2 + D**2)/3 + sqrt((-2*Bm*Bp/3 - Bz**2/3 - D**2/9)**3 + (2*Bm*Bp*D - 16*D**3/27 + 2*D*(-2*Bm*Bp - Bz**2 + D**2)/3)**2/4))**(1/3)) - (-1/2 + sqrt(3)*I/2)*(Bm*Bp*D - 8*D**3/27 + D*(-2*Bm*Bp - Bz**2 + D**2)/3 + sqrt((-2*Bm*Bp/3 - Bz**2/3 - D**2/9)**3 + (2*Bm*Bp*D - 16*D**3/27 + 2*D*(-2*Bm*Bp - Bz**2 + D**2)/3)**2/4))**(1/3)

Я также могу сделать это численно, в результате чего все мои символы будут числами, но «я» останется в решении в той же точке.

Кто-нибудь когда-нибудь видел это раньше или знает, что здесь делает питон или что означает это «я»? Было бы очень полезно узнать, что там происходит, поскольку вычисленные собственные значения не полностью ведут себя, как я ожидал, и я возлагаю вину на эти термины, включая это «я». Спасибо за любые комментарии заранее.


person kire    schedule 13.11.2015    source источник
comment
Могу ли я быть идентификационной матрицей?   -  person Mel    schedule 13.11.2015
comment
Я тоже думал об этом, но для меня другая матрица в собственном значении не имеет смысла. Поправьте меня, если я ошибаюсь, но собственные значения не должны содержать матрицу, просто по тому, как выглядит процедура ее вычисления.   -  person kire    schedule 13.11.2015


Ответы (1)


I — воображаемая единица sqrt(-1).

>>> from sympy import I
>>> complex(I)
1j

Например,

>>> from sympy import poly
>>> from sympy.abc import x
>>> p = poly(x**2 + 1)
>>> p.root(0)
-I
>>> p.root(1)
I
person Warren Weckesser    schedule 13.11.2015