这是练习:
(a)该函数采用另一个函数f(n),其中n∈N作为参数 并返回行的限制。该函数使用epsilon作为 之前,但这次循环将结束时f之间的差异 (n)和f(n + 1)小于epsilon。
(这不是积分,只是为了锻炼)。
这是我的代码:
import sys
sys.setrecursionlimit(10000000)
epsilon = 0.0001
def limit(param):
while param(1) >= epsilon:
print(param)
return -1
def f(n):
return f(n / (n + 1))
limit(f)
我必须创建一个函数limit
,它将其他函数作为参数。这些函数创建行:例如:
f(n) = n / (n + 1)
g(n) = n / (n + 2)
h(n) = n * 0.005
函数限制需要能够将所有这些函数作为参数,而不是检查该函数是否收敛于一个函数(使用epsilon完成)。
我知道如何测试特定行是否收敛到一个:
epsilon = 0.0001
def test(n):
while abs(n / (n + 1) -1) >= epsilon:
n += 1
print(n, "/", n+1, " = ", n/(n+1))
return True
test(1)
但我在第一段代码中遇到以下问题:
欢迎任何帮助!
答案 0 :(得分:1)
您可以将函数及其参数作为单独的参数传递,然后在函数内创建函数调用。
好的,这是一个令人困惑的陈述。 : - )
让我用代码示例澄清:
def function(parameter):
print(f'I am function function with parameter {parameter}')
def call_me_with(func, param):
func(param)
call_me_with(function, 5)
函数是Python中的对象,就像(几乎)其他任何东西一样。
希望这有帮助!
答案 1 :(得分:0)
def limit(param, function, n):
while param(1) >= epsilon:
print(param)
result = function(n)
return -1