我准备开算法专栏了! 在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是不是就为零点了,如果是就返回,负责的话,这里就是计算值,下面的交换变量其实很重要,完成了重要局部参数的传递,接着继续二分计算.
调用的时候就是这样
bisection(lambda x: x ** 3 - 1, -5, 5)
因为是Callable函数,所以一个短小的匿名函数更适合这样的场景.
但是可能一个人的力量有限,也欢迎志同道合的小伙伴一起完成这个算法系列的文章.
https://blog.csdn.net/qq_40061206/article/details/109074188
https://github.com/keon/algorithms
https://github.com/TheAlgorithms/Python/tree/master/arithmetic_analysis