我正在尝试解决Python中的广义特征值问题,因此我正在使用scipy.linalg.eigvals
来实现此目的。具体来说,我打电话给
scipy.linalg.eigvals(A, B)
其中A
和B
是2个包含复数的相同形状的数组。
当我这样做时,我收到以下警告:
/usr/lib/python2.7/dist-packages/scipy/linalg/decomp.py:57: ComplexWarning: Casting complex values to real discards the imaginary part
overwrite_a, overwrite_b)
并且它不会产生预期的特征值。如果我将B
设置为具有实际值,同时保持A
复杂,则会发生这种情况,反之亦然。仅当两个数组仅包含floats
时才会显示警告。
当我使用eig
代替eigvals
时也会发生这种情况。
但是,根据scipy documentation,数组可能很复杂:
知道为什么会弹出这个警告?如果有人能解释发生的事情,我会很高兴的。谢谢!
编辑:我刚检查了我的scipy版本,它是0.9.0 version。但是,我不是在自己的电脑上工作,所以我宁愿不打扰技术人员更新,除非问题来自这里。
编辑:事实证明,即使警告发生,特征值实际上也是正确的。正如Warren Weckesser指出的那样,警告不会发生在scipy ver 0.10.0及以上版本。