繁体   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