我正在尝试在 python 上编写二分法代码,但我无法将其应用于不同的函数。到目前为止,我有这段代码:
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
这段代码不能很好地工作,因为我不知道如何定义函数。写得简单
Bolzano(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)
关于python - Python 上的 Bolzano 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29496699/