利用 SymPy 计算导数时出现“无法分配函数给调用”的错误

2024-06-01 13:26:36 发布

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

这个代码是一个泰勒展开的导数代码,它有5个导数长。因此ds(i)应该用新的x值(导数值)替换其零值变量。我不断收到错误“无法将函数分配给调用”

def derivatives(f, x, a, n):
    f = f(x)
    x = var
    a = 1.0
    n = 5
    ds = np.zeros(n)
    exp = f(x)
    for i in range(n):
        exp = sp.diff(exp,x)
        ds(i) = exp.replace(x, a)
    return ds

Tags: 函数代码inforvardef错误np
1条回答
网友
1楼 · 发布于 2024-06-01 13:26:36

你的意思可能是ds[i],而不是ds(i)。用于索引的方括号与用于函数调用的圆括号。也就是说,代码还有其他问题,从未定义的var到使用NumPy数组(?)来存储SymPy对象。通常,建议记住,Symphy主要用于表达式而不是函数。表达式不“接受参数”,它们不像Python中的可调用函数

所有这些都是不必要的,因为SymPy自己计算n阶导数。例如,exp(2*x)在0处的五阶导数:

x = sp.symbols('x')
f = sp.exp(2*x)     # an expression, not a function
n = 5
a = 0
print(f.diff(x, n).subs(x, a))    # take derivative n times, then plug a for x

打印32。或者,如果您希望Taylor扩展到并包括x**n

print(f.series(x, a, n + 1))

打印1 + 2*x + 2*x**2 + 4*x**3/3 + 2*x**4/3 + 4*x**5/15 + O(x**6)

相关问题 更多 >