我试图在python上编写bissection方法,但在将其应用于不同的函数时遇到了问题。到目前为止,我有这个代码:

def Bolzano(fonction, a, b, tol=0.000001):
   while abs(b-a)>tol:
       m=(a+b)/2
       if cmp(fonction(m))==cmp(fonction(a)):
           a=m
       else:
           b=m
   return a, b

这段代码不好用,因为我不知道如何定义函数简单的写作
波扎诺(3*x,0.5,1.0)
无法工作,因为未定义X。因此,我无法检查其余代码是否有问题。
当然,我可以先定义函数,然后再应用它,但我希望能够改变函数,而函数总是保持相同的算法,而不重写它有什么帮助吗?

最佳答案

你可以使用lambdas

Bolzano(lambda x: 3*x,0.5,1.0)

或者定义传递给Bolzano的函数:
def f(x):
    return 3*x

Bolzano(f, 0.5, 1.0)

然后您可以继续添加函数:
def f(x):
    return 3*x

def f1(x):
    return 3*x+6

Bolzano(f, 0.5, 1.0)
Bolzano(f1, 0.5, 1.0)

10-08 04:04