如何在Python中编写forward_difference函数?
写一个函数 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)