我知道 python 中的 sympy 可以对变量设置假设,例如 x 是正数、负数、实数、复数等。我想知道 sympy 是否可以相对于其他变量对变量设置假设。例如,如果我有变量 x 和 y,我可以设置 sympy 以假设 x > y 在其解决方案中。或者,或者,如果我有两个变量,a 和 B,我可以设置 sympy 来假设 a + 2B < 1?这类假设可能有助于 sympy 简化求解()和特征向量的复杂解决方案。
我已经查看了所有内容,但没有找到与在 sympy 中设置这些假设有关的信息。
我问是因为我试图找到特定矩阵的特征向量
a,b = symbols('a,b', nonnegative=False)
M = Matrix([ [1-a-2*b, a, b, b],
[a, 1-a-2*b, b, b],
[b, b, 1-a-2*b, a],
[b, b, a, 1-a-2*b] ])
Sympy 正确找到特征值
M.eigenvals()
我已经通过 MATLAB 和 WolframAlpha 确认了这一点,它们都给出了相同的结果。然而,特征向量是一团糟
M.eigenvects()
MATLAB 和 WolframAlpha 都返回 [1,1,1,1] [-1,-1,1,1] [0,0,-1,1] [-1,1,0,0] 的特征向量,它们是正确的特征向量。我什至没有尝试简化 sympy 的结果,因为它们非常长且复杂。我怀疑这与对变量的假设有关,例如指定 a+2b < 1,但我不确定。