python - Python 上的 Bolzano 算法

标签 python algorithm math

我正在尝试在 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/

相关文章:

python - 如何将 Pandas 系列元素转换为字符串

algorithm - Matlab: react 时间的滴定算法?

algorithm - 哪种数据结构有效地支持给定的操作

algorithm - 500px.com排名算法

来自两行值等式的MySQL外键?

python - 从 threading.Thread 子类返回 wx.Panel

python循环而不是递归

计算调和级数的Python程序

python - 使用 Python 3.6.5 安装 MySQLdb 的问题 : Can't open 'mysql.h' - and Can't open : 'config-win.h' : No such file or directory

android - 如何在用作 map 的图像上绘制 GPS 位置?