我试图在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)