2015-11-13 7 views
3

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

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) 

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

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

+1

Мог "Я" быть в единичную матрицу [] (https://en.wikipedia.org/wiki/Identity_matrix)? – Mel

+0

Я тоже об этом думал, но мне другая матрица в собственном значении не имеет смысла. Исправьте меня, если я ошибаюсь, но собственные значения не должны содержать матрицу, просто как выглядит ее процедура вычисления. – kire

ответ

2

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 
+0

спасибо, это действительно объясняет. – kire

Смежные вопросы