如何在Python中编写forward_difference函数?

-3 投票
2 回答
763 浏览
提问于 2025-04-17 22:43

写一个函数 forward_difference,这个函数接收一个从实数到实数的函数 f:R→R,然后返回另一个实数值的函数。这个新函数的定义是 forward_difference(f)(x)=f(x+1)−f(x),也就是说,它会计算 f 在 x+1 处的值减去 f 在 x 处的值。

我想用 Python 写一些代码。那我该怎么做呢?也许第一行是

def forward_difference(f):

谢谢你!

2 个回答

0

这其实很简单,把你问题的英文描述转成代码,过程几乎可以说是直接明了:

def forward_difference(f):
    def new_func(x):
        val = f(x + 1) - f(x)
        return val
    return new_func

使用它:

g = lambda x: x ** 2
g_fd = forward_difference(g)
g_fd(1)
Out[5]: 3
2

关键点在于,在Python中,你可以在一个函数里面定义另一个函数。每次调用forward_difference时,都会创建一个新的函数对象。

而且,里面的函数可以访问外面函数调用时的变量(在这个例子中,重要的是参数f)。

def forward_difference(f):
    def difference_func(x):
        return f(x+1) - f(x)
return difference_func

每个独立的difference_func都有自己版本的f

对于这么简单的例子,你甚至可以用一个lambda表达式来代替命名的内部函数:

def forward_difference(f):
    return lambda x : f(x+1) - f(x)

撰写回答