Python 有没有办法区分一个函数?

Python 有没有办法区分一个函数?,python,scientific-computing,Python,Scientific Computing,假设我已经定义了一个函数 def func(x): return x**2; 有没有一个方法XXX将“func”作为参数并返回另一个派生函数?比如说, dfunc = XXX(func); print(dfunc(3)) 给我6 我需要一个函数,返回贝塞尔函数的一阶导数,这是我的家庭作业>有两种方法可以做到: 使用符号数学,这基本上就像编码一个代数表达式,然后让计算机计算出导数的解析表达式;这些功能非常强大,但仅限于某些类型的问题: 使用有限差分法。这是一个非常常见且强大的概念,

假设我已经定义了一个函数

def func(x):
    return x**2;
有没有一个方法XXX将“func”作为参数并返回另一个派生函数?比如说,

dfunc = XXX(func);

print(dfunc(3))
给我6


我需要一个函数,返回贝塞尔函数的一阶导数,这是我的家庭作业>

有两种方法可以做到:

  • 使用符号数学,这基本上就像编码一个代数表达式,然后让计算机计算出导数的解析表达式;这些功能非常强大,但仅限于某些类型的问题:

  • 使用有限差分法。这是一个非常常见且强大的概念,其基础是使用导数的定义,其中delta_x较小且有限,而不是趋向于零:

  • 对于您的特定问题,可以这样做,例如:

    import numpy as np
    import matplotlib.pyplot as plt
    
    def func(x):
        return x**2
    
    def finiteDifference(f, limits, deltaX):
        # create values of the function at specific locations
        x = np.arange(limits[0], limits[1]+deltaX, deltaX)
        y = np.zeros(len(x))
        for i in range(len(x)):
            y[i] = f(x[i])
        # construct the derivative
        dydx = np.zeros(len(x))
        # first order at the ends
        dydx[0] = (y[1]-y[0]) / deltaX
        dydx[-1] = (y[-1]-y[-2]) / deltaX
        # central 2nd order elsewhere
        for i in range(1, len(x)-1):
            dydx[i] = (y[i+1] - y[i-1]) / (2.*deltaX)
    
        return x, y, dydx
    
    x, y, dydx = finiteDifference(func, (-2, 2), 0.1)
    plt.plot(x, y, "r-", x, dydx, "b-", lw=2)
    # compare with analytical f'=2x
    plt.plot(x, 2.*x, "gx", ms=5, mew=2)
    plt.show()
    

    简短回答,不。长回答,我相信有专门的图书馆可以做到这一点。python中的函数与数学中的函数不同。