Sympys的doit()对导数有什么作用?

2024-10-05 14:32:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用sympys diff计算f(y(x))w.r.t到x的高阶导数

from sympy import *
from IPython.display import display
init_printing(use_latex=True)

x = symbols('x')
f,  y = symbols('f, y', cls=Function)

d2 = diff(f(y(x)),x,2)
print(d2)
print(d2.doit())

Sympy退货:

^{pr2}$

乳胶图像:Sympy result。在

虽然第一个结果似乎是正确的,但我不明白doit()操作后第二个表达式中的因子2。在


Tags: fromimportinitipythondisplaydiffd2print
1条回答
网友
1楼 · 发布于 2024-10-05 14:32:16

你好像偶然发现了一个bug,was just fixed a few weeks ago。在

您可以通过将fy、和{}分别替换为一些函数或值来进行测试(附加到代码中):

f_ex = Lambda(x, x**2)
y_ex = Lambda(x, sin(x))
x_ex = 2

substitutions = [ (f,f_ex), (y,y_ex), (x,x_ex) ]

print( d2.subs(substitutions).doit().n() )        #-1.30728724172722
print( d2.doit().subs(substitutions).doit().n() ) #-0.960930862590836

打印的值应该相同。在

这个问题可以进一步孤立于:

^{pr2}$

在这里,一个普通的doit仅仅添加了一个因子2,这显然是错误的。在

相关问题 更多 >