【问题标题】:.eigenvals creates a new variable.eigenvals 创建一个新变量
【发布时间】:2015-11-13 14:37:17
【问题描述】:

我正在使用 .eigenvals() 函数计算矩阵的特征值。当我为我的矩阵这样做时,我从未声明过的新变量出现在解决方案中,我不知道它来自哪里,也不希望它发生,但它肯定会影响解决方案。 我有 numpy 和 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)

我也可以用数字来做,结果是我所有的符号都是数字,但“我”在同一点停留在解决方案中。

有没有人以前见过或知道,python 在这里做什么或者这个“我”代表什么?知道那里发生了什么会很有帮助,因为计算出的特征值并没有像我预期的那样完全表现出来,我把责任归咎于包括“我”在内的那些术语。 提前感谢任何 cmets。

【问题讨论】:

  • “我”可以是identity matrix 吗?
  • 我也想过这个问题,但对我来说,特征值中的另一个矩阵没有意义。纠正我,如果我错了,但特征值不应该包含矩阵,只是看它的计算过程是什么样的。

标签: python python-2.7 numpy sympy eigenvalue


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多