区分,.diff()不会给出预期的输出

时间:2016-08-01 15:24:51

标签: python math sympy differentiation

我写了一些代码,但问题出现在这里:

[IN>] from sympy import*

[IN>] t= Symbol('t')
      x1 = Function('x1')(t)
      x2 = Function('x2')(t)
      y1 = Function('y1')(t)
      y2 = Function('y2')(t)

我定义了我的表达式:

[IN>] f = (x1.diff(t)*y2.diff(t)- x2.diff(t)*y1.diff(t))

然后,区分表达式f wrt。我得到的第一个加数因子 意外输出:

[IN>] f.diff(y2.diff(t))

[OUT>] Subs(Derivative(x1(t), t), (_xi_2,), (Derivative(y2(t), t),))

但如果我区分wrt。第二个加权因子

[IN>] f.diff(y1.diff(t))

[OUT>] -Derivative(x2(t), t)

我得到了所需的预期的结果。我完全被这个困惑了。更重要的是,如果我改变了加数的顺序,我会得到相同的结果:

[IN>] (-x2.diff(t)*y1.diff(t)+x1.diff(t)*y2.diff(t) ).diff(y2.diff(t))

[OUT>] Subs(Derivative(x1(t), t), (_xi_2,), (Derivative(y2(t), t),))

[IN>] (-x2.diff(t)*y1.diff(t)+x1.diff(t)*y2.diff(t) ).diff(y1.diff(t))

[OUT>] -Derivative(x2(t), t)

但是,如果我交换减号`-``sign,那么问题就出现在另一对函数中:

[IN>] (+x2.diff(t)*y1.diff(t)-x1.diff(t)*y2.diff(t) ).diff(y1.diff(t))

[OUT>] Subs(Derivative(x2(t), t), (_xi_2,), (Derivative(y1(t), t),))

1 个答案:

答案 0 :(得分:0)

好的,要获得所需的结果,我只需要广告.doit(),因为它返回了Subs()函数。

(+x2.diff(t)*y1.diff(t)-x1.diff(t)*y2.diff(t) ).diff(y1.diff(t)).doit()

Derivative(x2(t), t)