APP下载

迭代法求解常见方程及其在计算机中的实现

2018-10-19卢一荻

电子世界 2018年19期
关键词:迭代法方程组牛顿

卢一荻

求解方程的解是数学学习和研究工作中常见难点问题,很多学科的最终问题都归咎于方程解的问题,但很多情况下解的存在性判断和求解过程极其复杂,通常情况又依赖于计算机来判断与求解。本文受一元二次方程的零点存在性判断的启发,调研相关资料,采用了迭代法实现对一元三次方程的根的求解及其计算机实现过程,并以此为基础,将迭代法拓展到常见的线性方程组(三元一次方程组)的求解,并对其实现求解原理与计算实现过程进行了阐述,为进一步掌握数据与计算机的交叉应用提供基础。

1.引言

在初中刚开始接触一元二次方程的时候,会发现带入某值x1使得f(x1)>0,而带入x2时会发现f(x2)<0,因为f(x)是个连续函数,所以必定存在x0,在x1、x2之间,使得f(x0)=0,此时x0则是方程的其中一个根,这其实本质就是连续方程的零点问题。实际上,大多数方程的解都具有一定的规律性,正是由于数学方程的解的规律性,使得利用计算机来判断与求解方程的根具有可行性。而迭代法是常见方程求解的一般方法,如本文所要分析的一元三次方程求解和多元一次线性性方程组在计算机中的实现原理都源自于迭代思想。

本文结合对数学方程求解的兴趣,在不断探索方程根的特点过程中,受到连续函数零点判断准则启发,对一元三次方程的根的判断与求解在计算机中的实现原理和常见的线性方程组的迭代法进行深入分析总结,为后续进入大学对数学与计算机相关学科的深入学习奠定基础。

2.迭代法介绍

迭代法是一种不断用变量的旧值在一定迭代准则下去逼近真实值的方法,通常都是借助计算机来完成,由于计算机运算速度快,且在做重复性计算方面具有先天优势,只要通过计算机编写特定程序,并按照迭代要求不断重复执行,即可最终得到真实值或近似真实值。本文在此主要介绍牛顿(Newton)迭代法、雅可比(Jacobi)迭代法和高斯-塞德尔(Gauss-Seidel)迭代法。

2.1 牛顿迭代法

作为经典的方程近似求解方法,在实数解和复数解的求解应用中得到了广泛的应用。其提出的背景是在解高次方程时遇到没有确切求根公式,有时根的求解精度得不到有效保证,甚至是无法求解,因此寻找有效的方法求解方程的近似解对于科学研究和工程计算是十分重要的。

牛顿迭代法的思路是用曲线切线的零点逼近曲线零点,如对于任意方程f(x)=0,可以借助高中三个一元二次问题的思想进行求解,即将方程的根看成是曲线的零点问题。其主要思想如下:

设方程f(x)=0的真实根为f(x0)=0,但由于无法精确算出,则根据牛顿迭代公式可以如下进行迭代求解:

第一步:取(x0,f(x0))附近的一个点(x1,f(x1)),并求该点的切线方程,y=f(x1)+ f'(x1)(x-x1)。

第二步:求上述切线方程的零点,即令y=0,得到切线方程的零点x2=x1-f(x0)/ f'(x0),该x2便是比x1更接近于x0的近似解。

依次按照上述第一步与第二步继续求解近似解对应点的切线方程及其对应的零点,则可以得到真实值x0对应的近似解序列xn+1=xn-f(xn)/f'(xn)。

从文献调研来看,只要上述方程所对应的函数f(x)是连续的,且对应零点是孤立的,则一定存在一个区间范围,只要选取的初始迭代值x1在该区间范围,通过牛顿迭代法求解的近似解序列则一定逐步收敛到真实值x0。

2.2 雅可比(Jacobi)迭代法

上述的牛顿迭代法主要适用于一元方程,但是实际解决问题时由于可能遇到多元方程时,则并不好进行牛顿迭代求解,因此后续又提出了雅可比迭代法和高斯-塞德尔迭代法。

雅可比迭代法主要的解决对象是多元一次方程组,如式(1)所示,n元一次方程有唯一解的充分条件是存在n个线性无关的等式。现假设(1)中个式子线性无关,对应的求解思想是:

雅可比迭代法求解多元一次方程,只要上述方程是n个线性无关的方程,该迭代算法便是收敛的。

2.3 高斯-塞德尔(Gauss-Seidel)

高斯-塞德尔迭代算法是基于雅可比迭代算法之上,是对雅可比迭代的一种优化,因为雅可比迭代是本次迭代计算时采用的是变量值全是上次迭代结果,而高斯-塞德尔迭代算法的思想是在每次迭代计算时采用了最新值,其思想可以表示为式(3)所示。

每次代入算出的最新值,进行迭代根据设定的精度值停止迭代,得到方程地根。相比雅可比迭代法,此种迭代法具有更快的收敛速度。

3.牛顿迭代法解一元三次方程及计算机实现流程

3.1 牛顿迭代法解一元三次方程案例

则按照2.1所述的牛顿迭代法有:

其迭代计算结果如表1所示。

表1 牛顿迭代法求解一元三次方程迭代结果

可见当迭代到第5次就已经接近真实值了,收敛速度整体令人满意。

图1 牛顿迭代法解一元多次方程的计算机软件实现流程图

3.2 牛顿迭代法解方程计算机实现流程

牛顿迭代法通过计算机编程实现是比较简单的,从文献调研来看,用Matlab或C语言编程实现的较多,但其基本思路是一致的,如图1所示。

4.雅可比与高斯-塞德尔迭代法求解多元一次方程及计算机实现流程

4.1 雅克比迭代法求解多元一次方程案例

例如:用雅可比迭代法求解下列方程组:

将方程组按雅可比方法写成:

并进行一般化处理得到:

表2 雅可比求解多元一次方程迭代结果

4.2 高斯-塞德尔迭代法求解多元一次方程案例

从2.2与2.3的原理描述可知,雅可比迭代法在计算时是用第k次的全部分量x(k)去迭代计算第k+1次的结果,进而得到对应的所有分量x(k+1)。但其实这是计算第i个分量xi(k+1)时,按照方程的顺序,已经通过迭代计算得到最新分量值,但却没有被得到利用。事实上,从直观感觉上,那些最新计算出的分量应该比旧的分量更优。因此,高斯-塞德尔迭代法便是充分利用了那些最新计算出来的第k+1次近似,代入到后续的方程计算,见式(3)所示。对上述的三元一次方程组,则通过采用高斯-塞德尔迭代算法求解得到如表3所示的结果。

表3 高斯-塞德尔求解多元一次方程迭代结果

通过对比表1与表2可知,对于同一个多元一次方程组,采用高斯-塞德尔迭代法比雅可比迭代法收敛快,也就是说,如果目标是达到同样的精度,则高斯-塞德尔迭代法比雅可比迭代法所需的迭代次数要少。

4.3 雅可比与高斯-塞德尔迭代法计算机实现流程

和牛顿迭代法计算机编程实现类似,当前文献显示的主要都是基于Matlab或C语言编程,整体思路如图2所示。

图2 雅可比与高斯-塞德尔迭代法解多元一次方程的计算机软件实现流程图

5.结论

方程的求解是实际工程应用和科学研究所必须解决的计算问题,在大多数情况下方程求解并不会很容易,尤其是实际工程计算,往往带有很多近似求解。本文介绍的迭代法求解方程的解是十分有用且具有重大工程应用价值的方法理论,尤其是文章重点介绍的牛顿迭代法、雅可比迭代法和高斯-塞德尔迭代法是迭代求解问题的经典理论,最后文章通过引入实际求解例子进行了三种迭代求解案例的分析,考虑到迭代法求解过程简单,只要进行简单的重复计算即可,所以文章特意对相应的计算方法进行了对应计算机程序的实现流程分析,充分体现了数学思想在计算机实现的机理,为深入理解算法在计算机实现原理提供参考。

猜你喜欢

迭代法方程组牛顿
迭代法求解一类函数方程的再研究
深入学习“二元一次方程组”
《二元一次方程组》巩固练习
牛顿忘食
一类次临界Bose-Einstein凝聚型方程组的渐近收敛行为和相位分离
风中的牛顿
失信的牛顿
迭代法求解约束矩阵方程AXB+CYD=E
预条件SOR迭代法的收敛性及其应用
非自治耗散Schrödinger-Boussinesq方程组紧致核截面的存在性