假設我有一個如下的方程組,但是我有要求,在我的方程組中,我需要2個語句中的1個爲真。在解決()函數中的Sympy python OR語句
實施例:
sympy.solve([EQ1 EQ2或,EQ3或EQ4,EQ5或EQ6,...],[瓦爾])
當我把或語句,它不」按照我的意圖工作(第一個eq總是被評估)。我如何用或按照我的意圖表達方程組?
謝謝。
假設我有一個如下的方程組,但是我有要求,在我的方程組中,我需要2個語句中的1個爲真。在解決()函數中的Sympy python OR語句
實施例:
sympy.solve([EQ1 EQ2或,EQ3或EQ4,EQ5或EQ6,...],[瓦爾])
當我把或語句,它不」按照我的意圖工作(第一個eq總是被評估)。我如何用或按照我的意圖表達方程組?
謝謝。
試着改造的結果集,然後利用工會的或,交點爲和:
res1 = set(solve(eq1, x))
不幸的是,這可能無法正常工作是某些情況下(預計的結果是一解決方案列表,如果出現複雜情況,可能無法正常工作)。
In [2]: res1 = set(solve(x**2-1, x))
In [3]: res2 = set(solve(x-3, x))
In [4]: res2
Out[4]: set([3])
In [5]: res1 | res2
Out[5]: set([-1, 1, 3])
In [6]: res1 & res2
Out[6]: set([])
即,|算子得到集合的聯合(滿足任何方程的解),而運算符得到集合的交集(即滿足所有方程的解)。
SymPy的下一個版本將具有solveset()函數,它將始終返回一組或類似對象。交叉路口和工會將始終保證工作。但在此之前,嘗試像我的解決方案。
只需將方程式乘以一起。兩個表達式的乘積是零,如果其中一個是零。
在SymPy中,solve(expr, x)
假定expr = 0
(例如,solve(x**2 - 1, x)
給出[-1, 1]
)。
如果你想解決,例如,x**2 - 1 = 0
或x**2 - 4 = 0
,你應該使用solve((x**2 - 1)*(x**2 - 4), x)
。
請把你的代碼。你是通過Python還是使用or運算符,還是使用SymPy的Or對象? –
或運算符不是對象 – jenny