Bolzano算法在Python上

2024-05-21 09:09:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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。因此,我无法检查其余代码是否有任何错误。在

当然,我可以先定义函数,然后再应用它,但我希望能够更改函数,同时始终保持相同的算法而不重写它。有什么帮助吗?在


Tags: 方法函数代码returnif定义defabs
1条回答
网友
1楼 · 发布于 2024-05-21 09:09:59

您可以使用lambdas

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

或定义传递给Bolzano的函数:

^{pr2}$

然后您可以继续添加函数:

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)

相关问题 更多 >