微分,.diff() 没有给出预期的输出
Differentiation, .diff() doesn't give expected output
我写了一点代码,但是发现问题在这里:
[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)
但是如果我交换减号`-``,问题就出现在另一对函数中:
[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),))
好的,要获得 期望的 结果,我只需要添加 .doit()
,因为它返回我的 Subs()
函数。
(+x2.diff(t)*y1.diff(t)-x1.diff(t)*y2.diff(t) ).diff(y1.diff(t)).doit()
Derivative(x2(t), t)
我写了一点代码,但是发现问题在这里:
[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)
但是如果我交换减号`-``,问题就出现在另一对函数中:
[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),))
好的,要获得 期望的 结果,我只需要添加 .doit()
,因为它返回我的 Subs()
函数。
(+x2.diff(t)*y1.diff(t)-x1.diff(t)*y2.diff(t) ).diff(y1.diff(t)).doit()
Derivative(x2(t), t)