以索引作为衍生订单求和

时间:2017-03-03 09:19:38

标签: python sympy

我想定义一个包含函数导数的和,其中求和指数是导数阶。 简单的例子:

x, i = symbols("x i")
f = Function("f")(x)
Sum(diff(f,x,i), [i,1,3])

但是,这只返回一个零的总和。我认为这是因为它试图首先区分f wrt x,然后是wrt i。由于f不是i的函数,因此在处理之前它由Sum函数处理为。我想要发生的是

diff(f,x,1)
diff(f,x,2)
diff(f,x,3)

有没有办法让这项工作?

1 个答案:

答案 0 :(得分:3)

仅当sympy.diff(f,x,i)是整数时,

i相当于f'i的阶导数。在你的情况下,它是一个符号。

使用内置sum()以及生成器表达式:

>>> sum(diff(f,x,j) for j in range(1,4))
Derivative(f(x), x) + Derivative(f(x), x, x) + Derivative(f(x), x, x, x)