2024-05-16 15:02:18 发布
网友
我试图构造一个函数来返回f的派生,一个一个变量的函数。在
f
返回值应该是一个近似于f'的导数的函数 使用对称差商,这样返回的函数将计算(f(x+h) -f(x-h))/2h.
f'
(f(x+h) -f(x-h))/2h.
函数应该这样开始:
def derivative(f, x):
它应该近似于函数f在点x的导数。 有人知道我可以用什么类型的代码来构造这种类型的函数吗?在
/亚历克斯
你最好的选择可能是使用SymPy,它可以进行符号积分和微分等功能:
>>> from sympy import * >>> x, y, z = symbols('x y z') >>> diff(x**2, x) 2*x
您希望函数返回什么? 如果需要某个x中导数的值,则可能需要三个参数:
def derivative(f, h, x): return (f(x+h) - f(x-h))/2h
如果您想得到一个函数,它可以计算上述任何x,您可以使用:
对于一般函数f(x),可以通过标准(二阶)近似(f(x+h)-f(x-h))/2h,直接得到对其一阶导数的数值近似。主要的挑战是,与f(x)呈现非二次变化的长度尺度相比,选择h较小,但足够大,以避免在减去f(x)的附近值时出现舍入误差。在
然而,如果你想用代数的方法来区分你的函数,那么事情就更具挑战性了。最简单的情况是f(x)是多项式,因此可以用x的幂系数向量来表示,在这种情况下,numpy.polyder()可以用来计算n'阶导数的系数。在
对于更复杂的函数,可以查看SymPy。在
两个纽比·波利德()和SymPy选项要求您以专用于这些特定工具的方式表示函数。我不知道有什么方法可以接受一个普通的Python函数并构造另一个实现精确导数的函数。在
你最好的选择可能是使用SymPy,它可以进行符号积分和微分等功能:
您希望函数返回什么? 如果需要某个x中导数的值,则可能需要三个参数:
如果您想得到一个函数,它可以计算上述任何x,您可以使用:
^{pr2}$对于一般函数f(x),可以通过标准(二阶)近似(f(x+h)-f(x-h))/2h,直接得到对其一阶导数的数值近似。主要的挑战是,与f(x)呈现非二次变化的长度尺度相比,选择h较小,但足够大,以避免在减去f(x)的附近值时出现舍入误差。在
然而,如果你想用代数的方法来区分你的函数,那么事情就更具挑战性了。最简单的情况是f(x)是多项式,因此可以用x的幂系数向量来表示,在这种情况下,numpy.polyder()可以用来计算n'阶导数的系数。在
对于更复杂的函数,可以查看SymPy。在
两个纽比·波利德()和SymPy选项要求您以专用于这些特定工具的方式表示函数。我不知道有什么方法可以接受一个普通的Python函数并构造另一个实现精确导数的函数。在
相关问题 更多 >
编程相关推荐