gpt4 book ai didi

python - Sympy Subs 在更换电源时不更换符号

转载 作者:行者123 更新时间:2023-12-01 08:57:01 27 4
gpt4 key购买 nike

我正在尝试进行一些基本替换,但 SymPy 不想帮助我

x, y, z, k = symbols("x y z k", positive=True, real=True)
exp = x**4 + x**3 + x**2 + x
what_im_expecting = simplify(y**(Rational(1/4)) + y**(Rational(3/4)) + sqrt(y) + y)
what_i_actually_get = exp.subs(x**4,y)
exp, what_i_actually_get, what_im_expecting

返回

x + y**(Rational(3, 4)) + sqrt(y) + y

enter image description here

谁能帮帮我吗?

<小时/><小时/>

一个更复杂的例子:

enter image description here

最佳答案

可以信任方法 subs 来替换与给定“旧”表达式完全匹配的术语,即此处的 x**4 。与x**4相关的其他东西的替换就不那么确定了。 (有 many open issues 带有 subs:有人说它替代太多,有人说太少。)有一些特定于 power 的替代逻辑,但 x 本身是不是正式的权力,因此它逃脱了这种逻辑。解决方法:暂时用 x**1 替换 x,防止自动评估 x 的能力。

x1 = sp.Pow(x, 1, evaluate=False)
subbed = exp.subs(x, x1).subs(x**4, y).subs(x1, x)

现在subbedy**(3/4) + y**(1/4) + sqrt(y) + y

但是,不要指望 subs 具有像人类一样的聪明才智。使用相同的解决方法,尝试执行 subs(x**4 - 1, y) 会导致 x**3 + x**2 + x + y + 1 :没有出现诸如 sqrt(y+1) 等内容。最好以最直接的方式替换:

subs(x, (y+1)**Rational(1, 4))

那么您不需要任何解决方法。

关于python - Sympy Subs 在更换电源时不更换符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52730086/

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