求解非线性方程的数值算法
2016-05-30杨晓蕾
杨晓蕾
摘 要:本文通过对于求解非线性方程问题的五种方法即二分法、牛顿法、简易牛顿法、割线法、steffensen法等数值分析方法的算法原理及实现方法的研究,通过对非线性方程开普勒方程x-asinx=b(分别对a,b赋值1,2)运用以上五种不同的迭代法进行求解,对几种迭代法的运算量、迭代步数、所用时间进行分析与评价,最终对其进行比较,得到五种不同迭代方法的适于求解的非线性方程类型的简要分析推断。
关键词:二分法;牛顿迭代法;简易牛顿法;割线法;Steffensen法
对于非线性方程的求解,在实际问题中时常出现此类问题,在科学和工程计算中非线性方程尤为重要,许多我们熟悉的线性模型都在一定的条件下由非线性问题简化得到的,为得到更符合实际的解答,往往需要直接研究非线性模型,从而产生非线性科学。
非线性方程的数值解法在实际中有广泛的应用,但由于非线性方程的复杂性,在解法上直接法计算求解几乎不可能,所以需借助二分法、迭代法求解。
在几百年的研究努力下,已建立了二分法、牛顿法、简易牛顿法、割线法、Steffensen法。
3 总结分析
由实验结果知,二分法经过迭代后,可以达到较好的精度,但是当所求问题较为复杂,且对其根的估计范围较为宽泛时,所需迭代的步数很大,计算量和空间储存上会有很大的占用。
牛顿法是二次收敛的,因此用牛顿法求解非线性方程的解,迭代次数较小,且计算量和占用空间较小,可以得到相对较精确的数值解。但其缺点是需要求非线性方程的导函数值,适用范围较小,只能对一阶可导的方程进行迭代。牛顿法在比较复杂的问题上能以较小的运算量得出较为精确的数值解。
简易牛顿法拥有较小的计算量,算法只用到初始值的导数值作为分母,但缺点是需要迭代步数较多,适合简单且容易观察出零点大致位置的非线性方程。
割线法收敛速度不如牛顿迭代法收敛速度快,但比二分法快,可以达到相对较高的精度,在其迭代过程中每步只需一次新的函数赋值,此类迭代算法中函数赋值构成了主要的计算量,综合比较割线法的运算量要比牛顿法小。
Steffensen 法的收敛速度在一定条件下可以达到二次收敛,相对割线法和二分法收敛速度较快,在一定程度上避免了两个值很近时造成的误差,也不需要求函数导数值,综合来看Steffensen 迭代算法计算量较小且精度较高。
参考文献:
[1] David Kincaid&Ward Cheney著,王国荣,俞耀明,徐兆亮译.数值分析.