gpt4 book ai didi

python - sympy中公式的递归替换

转载 作者:太空宇宙 更新时间:2023-11-04 02:34:18 26 4
gpt4 key购买 nike

我推导出了一个公式,稍后我想递归地代入它。例如:

f = Function("f")
expr=f(x,y).diff(x) + f(x,y).diff(x).diff(x)
expr.subs(f(x,y).diff(x),f(x,y+1))

这给了我

f(x, y + 1) + Derivative(f(x, y + 1), x)

但我想要的是

f(x,y+1) + f(x,y+2)

我该如何以一种好的方式做到这一点?

最佳答案

最好的方法是使您想要的属性 f(x, y).diff(x) == f(x, y + 1) 成为函数声明的一部分。

class f(Function):
def fdiff(self, argindex):
if argindex == 1:
return f(self.args[0], self.args[1] + 1)
else:
raise ArgumentIndexError(self, argindex)

现在 f(x,y).diff(x) + f(x,y).diff(x).diff(x) 返回 f(x, y + 1 ) + f(x, y + 2) 直接,没有任何替换。顺便说一句,请注意 f(x,y).diff(x, 2) 是多重导数的较短表示法。

说明:方法fdiff实现了一个函数的一阶导数,它必须处理所有变量的导数。你没有说关于第二个变量的导数应该如何工作,所以我必须通过提高 ArgumentIndexError 来默认它,这将在 SymPy 中处理得更高。

例如,f(x,y).diff(x, 3) + f(x,y).diff(x, y)现在是

f(x, y + 3) + Subs(Derivative(f(x, _xi_2), _xi_2), (_xi_2,), (y + 1,))

由于 fdiff 没有实现该偏导数,因此生成具有未计算导数的 Sub。

关于python - sympy中公式的递归替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48304405/

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