Python 方程求解器(最大值和最小值)
Python equation solver (max and min)
如何使用 python(也许是 Sympy)库解决 x * max(x,15) = 10
等式?
max()
表示给定两个参数之间的最大值。
我的方程式有更复杂的形式,但我想以简化形式解决它。
你的等式没有答案。您正在分配 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]
当我将你的方程式代入 sympy.solve
时,它给出了 NotImplementedError,这意味着解决它的算法没有实现(为此我打开了 https://github.com/sympy/sympy/issues/10158)。
我认为要求解这样的方程,您需要用参数替换每个 Max
或 Min
并求解每个迭代,然后删除 Max
所在的解or Min
在其参数中实际上不是最大或最小的。
我会将完整的算法留给您或其他回答者(或者希望有人会在 SymPy 中实现它)。一些有用的提示:
expr.atoms(Max, Min)
将从 expr
.
中提取 Max
和 Min
的所有实例
expr.subs(old, new)
将 return 一个新的表达式 old
替换为 expr
.
[ 中的 new
如果将 Max
转换为 Piecewise
,SymPy 似乎可以求解这个方程。
In [4]: solve(x*Piecewise((x, x >=15), (15, x < 15)) - 10, x)
Out[4]: [2/3]
如何使用 python(也许是 Sympy)库解决 x * max(x,15) = 10
等式?
max()
表示给定两个参数之间的最大值。
我的方程式有更复杂的形式,但我想以简化形式解决它。
你的等式没有答案。您正在分配 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]
当我将你的方程式代入 sympy.solve
时,它给出了 NotImplementedError,这意味着解决它的算法没有实现(为此我打开了 https://github.com/sympy/sympy/issues/10158)。
我认为要求解这样的方程,您需要用参数替换每个 Max
或 Min
并求解每个迭代,然后删除 Max
所在的解or Min
在其参数中实际上不是最大或最小的。
我会将完整的算法留给您或其他回答者(或者希望有人会在 SymPy 中实现它)。一些有用的提示:
expr.atoms(Max, Min)
将从expr
. 中提取
[ 中的expr.subs(old, new)
将 return 一个新的表达式old
替换为expr
.new
Max
和 Min
的所有实例
如果将 Max
转换为 Piecewise
,SymPy 似乎可以求解这个方程。
In [4]: solve(x*Piecewise((x, x >=15), (15, x < 15)) - 10, x)
Out[4]: [2/3]