我知道sympy在python中可以设置变量的假设,例如x是正数,负数,实数,复数等。我在想,sympy是否可以设置相对变量的假设到其他变量。例如,如果我有变量x和y,我可以设置sympy在其解决方案中假定x> y。或者,或者,如果我有两个变量a和b,我可以设置sympy来假设a + 2B < 1?这些假设可能有助于sympy简化复杂的解决方案来解决()和特征向量。在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,但我不确定。
你好,你似乎知道了很多关于假设系统中。我在哪里可以了解当前的状态更加的实用技巧假设系统在2016年年底?Sympy现在处于版本1,并且似乎仍然存在两个假设系统,因为假设模块和符号构造器假设都存在。文档没有解释为什么仍然存在两个系统或提供指导要知道何时使用其中一个或另一个 – Shaun 2016-12-02 19:14:24
@Shaun,要求更新说明的最佳位置是sympy邮件列表。 – Krastanov 2016-12-04 04:57:18