前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实现所有算法-二分法

Python实现所有算法-二分法

作者头像
云深无际
发布2022-07-13 17:01:50
2550
发布2022-07-13 17:01:50
举报
文章被收录于专栏:云深之无迹

我准备开算法专栏了! 在Github上面看我的叭叭消息的时候,看见了以前star的算法项目,这里认真的读了一下,觉得内容很棒,但是文档不是很全面.我希望补全这个内容.

首先是这个,使用Python实现所有算法

其实这个库真的很棒,还有C系的,那我每天保底有两篇文章了

就像这样,音频的滤波器也有

还有一个是算法+数据结构

里面已经将算法进行了分类

第一章为算法分析

这里就先放中文了,可能不是很好看

第一章的内容其实是求解线性的方程组.

因为微信对公式不太友好(可能是我不会),所以理论的东西我会考虑写成纸质的,之后录制成小视频来呈现,文章内容侧重于算法的实现.其次实现中出现的语法也会讲解.

在这个demo中使用了注解的功能,个人觉得如果想写出健壮得code或者看起来code有点厉害(这属于装逼需求了),可以使用.

Python 注解+参数+返回值小结 在一年的年初,我写过一篇相关的文章.

typing Python3.5中开始新增的专用于类型注解(type hints)的模块,为Python程序提供静态类型检查.

回调函数可以使用类似Callable[[Arg1Type, Arg2Type],ReturnType]的类型注释.

callable也是demo里面使用的

根据整洁代码这本书的意思哇,一个好的代码是不言而喻的,本身就在述说着一切,在Python里面是使用的字符串文档.

其次在工程的代码里面,测试是一个不容错过的环节,但是对于一个小的程序不必要写庞大的单元测试,对这个问题Python有更有趣的实现:

doctest是Python自带的一个模块。doctest有两种使用方式:一种是嵌入到python源码中,另外一种是放到一个独立文件。

doctest模块会搜索那些看起来像是Python交互式会话中的代码片段,然后尝试执行并验证结果。

多说无疑,写段代码看看:

注意""""""这个里面的内容

最后的参数是:verbose参数,如果设置为True则在执行测试的时候会输出详细信息。默认是False,表示运行测试时,只有失败的用例会输出详细信息,成功的测试用例不会输出任何信息。

一个详细的输出结果

内容回到眼前:“波尔查诺-维尔斯特拉斯定理是指有界数列必有收敛子列。从极限点的角度来叙述致密性定理,就是:有界数列必有极限点。” 找到ab之间为0的位置.

导入模块,把函数的框架写一下,注意这里使用了注解,三个参数后两个都是f类型,返回也是f类型.第一个参数是要传递一个函数进去,下面是这个函数的demo的样子.

这里写一个小函数,也使用一下注解

下面写函数体:

一开始就是我们的参数了,这里也有注解

如果里面的任意一个是0,这就是根了,数学问题.

如果两个函数乘大于0,会触发一个值错误,因为这就不是一个穿根的样子

这段代码其实是含金量最高的代码了,首先我们每次要确定的X位置,先定义,我们使用while循环,它适合一开始不知道次数的循环,但是我们知道它停止的范围,至于为什么是10-7这个,其实我老师说,就是100W/1就和0一样大了.减完以后发现大于0,那么就要继续运算,先要确认一下mid是不是就为零点了,如果是就返回,负责的话,这里就是计算值,下面的交换变量其实很重要,完成了重要局部参数的传递,接着继续二分计算.

调用的时候就是这样

代码语言:javascript
复制
 bisection(lambda x: x ** 3 - 1, -5, 5)

因为是Callable函数,所以一个短小的匿名函数更适合这样的场景.

但是可能一个人的力量有限,也欢迎志同道合的小伙伴一起完成这个算法系列的文章.

代码语言:javascript
复制
https://blog.csdn.net/qq_40061206/article/details/109074188
代码语言:javascript
复制
https://github.com/keon/algorithms
代码语言:javascript
复制
https://github.com/TheAlgorithms/Python/tree/master/arithmetic_analysis
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档