簡體   English   中英

Python方程求解器(最大和最小)

[英]Python equation solver (max and min)

如何用python(也許是Sympy)庫解決像x * max(x,15) = 10這樣的等式?
max()表示給定兩個參數之間的最大值。
我的方程有一個更復雜的形式,但我想以簡化的形式解決它。

如果將Max轉換為Piecewise ,看起來SymPy可以解決這個等式。

In [4]: solve(x*Piecewise((x, x >=15), (15, x < 15)) - 10, x)
Out[4]: [2/3]

當我將方程式插入sympy.solve ,它會給出NotImplementedError,這意味着解決它的算法沒有實現(我為此打開了https://github.com/sympy/sympy/issues/10158 )。

我認為要解決這些方程,你需要用它們的參數替換每個MaxMin並解決每次迭代,然后刪除其參數中MaxMin實際上不是最大或最小的解。

我將把完整的算法留給你或其他一些回答者(或希望有人會在SymPy中實現它)。 一些有用的提示:

  • expr.atoms(Max, Min)將從expr提取MaxMin所有實例。

  • expr.subs(old, new)將返回一個新表達式, old表達式替換為expr new expr

你的等式沒有答案。 您正在分配x=3 ,因此沒有要解決的變量。

x
3

Max(x, 15)
15

solve(x*Max(x, 15)-10, x) #No variable here
[]

也許,你打算這樣做: y*Max(x, 15) = 10

然后它成為一個有效的問題。

In [1]: solve(y*Max(x, 15)-10, y)
Out[1]: [2/3]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM