gpt4 book ai didi

python - 如何用python和sympy解决多元不等式?

转载 作者:太空狗 更新时间:2023-10-29 23:59:38 25 4
gpt4 key购买 nike

我是使用 python 和 Sympy 的新手...并且遇到了使用 sympy 解决多元不等式的问题。

假设我在一个文件中有很多函数,如下所示:

    cst**(sqrt(x)/2)/cst
exp(sqrt(cst*x**(1/4)))
log(log(sqrt(cst + exp(x))))
(y**(1/4) + y)**cst
sqrt(y/log(x))/cst
sqrt(cst**log(cst) + x)
(y**2)**(x/4)
sqrt(y*sqrt(cst**y))
log(sqrt(2)*sqrt(cst)*x)

我需要推导它们,设置常量的值并检查是否对于每个函数 f,

    df/dx > 0
df/dy < 0

x 在 [0, +oo) 中,y 在 [0, 1] 中。

为了推导我使用:

    dx = diff(f, x)
dy = diff(f, y)

然后当我尝试时:

    cst = 2 #(for example) 
solve(dx > 0)

我得到了这个错误:

    Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/sympy/solvers/solvers.py", line 634, in solve
symbols=symbols)
File "/usr/local/lib/python2.7/dist-packages/sympy/solvers/inequalities.py", line 374, in reduce_inequalities
raise NotImplementedError("only univariate inequalities are supported")
NotImplementedError: only univariate inequalities are supported

但如果我尝试这样做:

    x=Symbol('x', real=True, postive=True, nonzero=True)
y=Symbol('y', real=True, postive=True, nonzero=True)
solve(x**2+y > 0)

我得到了:

    True

哪个是好的且可行的答案。有没有办法解决多元不等式并始终得到可行的答案?

例如我想得到: 求解(x**2-y>0) 或(x>-sqrt(y), x>sqrt(y))

最佳答案

当尝试使用 SymPy 解决此问题时,您会收到一条非常明确的错误消息:NotImplementedError: only univariate inequalities are supported。请注意,这意味着如果您贡献解决此问题的算法,SymPy 团队将非常高兴。

现在很明显 sympy.solve 不够强大,您可以尝试另一种方法。最近(在 0.7.2 中)向 sympy 添加了一个隐式绘图例程,可以绘制表达式计算为 True 的位置。遗憾的是,它只是一个数值解,而不是您可以从 solve 获得的符号解,但它可能就足够了:

enter image description here

从图像中您可以看到表达式改变符号的地方只有一行,因此求解 expr==0 可能会得到您想要的结果。事实确实如此:

enter image description here

关于python - 如何用python和sympy解决多元不等式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17048180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com