非线性方程有实根时,可能一个或者多个甚至无穷多个根。因此,求解非线性方程的根分以下三个问题进行讨论:
① 根的存在性。即方程是否有根,有几个根。
② 根的分布。即求出根区间。
③ 根的精确化。即已知一个根的近似值,逐步提高根的精度,直至满足所要求的精度为止。
常见的非线性方程求解方法有二分法、一般迭代法、牛顿法、弦截法。
上述的方法是求解非线性方程的基本算法,但是这些算法也存在一定的局限性,后人也提出了很多基于这几种算法的优化算法,比如高斯牛顿法、LM法等。算法优化有以下几个目标:
① 从截断误差的维度来看,一个算法必须是截断误差小,收敛速度快,即运算量小,机器用时少;
② 从舍入误差的维度来看,舍入误差在计算过程中要能控制,即数值要稳定;
③ 从算法实现的维度来看,一个算法的逻辑结构不易太复杂,要便于程序编写和上机实现。
(1)介绍二分法、一般迭代法、牛顿法、弦截法的实现原理、几何解释以及Python代码;
(2)介绍一些改进迭代算法的原理以及优缺点,比如高斯牛顿法、LM法等;
(3)介绍一些算法实现过程中的一些常见问题,比如初值的选择、步长的选择等。
二分法:
一般迭代法:
牛顿法:
弦截法:
《数值计算方法》,刘玲、王正盛 编著,科学出版社.
因篇幅问题不能全部显示,请点此查看更多更全内容