非线性方程组的求解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
非线性方程组的求解
摘要:非线性方程组求解是数学教学中,数值分析课程的一个重要组成部分,作为一门学科,其研究对象是非线性方程组。求解非线性方程组主要有两种方法:一种是传统的数学方法,如牛顿法、梯度法、共轭方向法、混沌法、BFGS 法、单纯形法等。传统数值方法的优点是计算精度高,缺点是对初始迭代值具有敏感性,同时传统数值方法还会遇到计算函数的导数和矩阵求逆的问题,对于某些导数不存在或是导数难求的方程,传统数值方法具有一定局限性。另一种方法是进化算法,如遗传算法、粒子群算法、人工鱼群算法、差分进化算法等。进化算法的优点是对函数本身没有要求,不需求导,计算速度快,但是精度不高。 关键字:非线性方程组、牛顿法、BFGS 法、记忆梯度法、Memetic 算法
1: 三种牛顿法:Newton 法、简化Newton 法、修改的Newton 法【1-3】 求解非线性方程组的Newton 法是一个最基本而且十分重要的方法, 目前使用的很多有效的迭代法都是以Newton 法为基础, 或由它派生而来。 n 个变量n 个方程的非线性方程组, 其一般形式如下:
⎪⎪⎩⎪⎪⎨⎧===0),...,(...
0),...,(0),...,(21212211n n n n x x x f x x x f x x x f (1)
式(1)中,),...,(21n i x x x f ( i=1, ⋯, n) 是定义在n 维Euclid 空间Rn 中开域 D 上 的实值函数。若用向量记号,令:
⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=n x x x ...X 21,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡====)(...)()(0),...,(...0),..,(0)...,()(2121212,211X f X f X f x x x f x x x f x x x f X F n
n n n n
则方程组(1)也可表示为:
0)(=X F
(2) 其中:X ∈R n ,F ∶R n →R 0, F(X) ∈R n , R n 为赋值空间。一般地, 若在包含的某邻域
D 内, 按某种近似意义,用线性函数:
k k k b X A +=)X (l (3)
近似地代替向量值函数F(X),此处A k 是n 阶矩阵,则可将线性方程组:
k k k b X A +=)X (l (4)
的解作为非线性方程组( 2) 的近似解。
1.1 Newton 法[1]
Newton 法的迭代公式为:
,...2,1,0k )
-F(X )X )((X F'X X X k k k k k 1k =⎩⎨⎧=∆∆+=+ (5)其中k 1k k X -X X +=∆.
1.2 简化Newton 法[1]
尽管Newton 法具有较高的收敛速度,但在每一步迭代中,要计算n 个函数值f ,以及n 2个导数值f ′形成Jacobi 矩阵)('k X f ,而且要求)('k X f 的逆阵或者解一个n 阶线性方程组,计算量很大。为了减少计算量,在上述Newton 法中对一切k=0,1,2,...,取)('k X f 为.)('X f ,于是迭代公式修改为:
[]...2,1,0),X ()X ('X X k 1
k k 1k =-=-+k f f (6) 式( 5) 即为简化的Newton 法。该方法能使计算量大为减少,但却大大降低了收敛速度。简化的Newton 法的算法与Newton 法的算法区别就在于只由给定的初始近似值计算一次)('X f ,以后在每一次迭代过程中不再计算)('k X f ,保持初始计算值。
1.3 修正的Newton 法[2]
吸取Newton 法收敛快与简化的Newton 法工作量省的优点,文献【2】把m 步简化的Newton 步合并成一次Newton 步。则可以得到下列迭代程序:
⎪⎭⎪⎬⎫=-==+--m ,k 1k 1j ,k 1k j ,k j k ,k k ,0X X )X (f )X ('f X X X X (7)
式中: j=1, 2, ⋯, m, k=0, 1, 2, ⋯, 该式称为修正的Newton 法。
通过分析Newton 法、简化的Newton 法和修正Newton 法的原理, 并通过对算例的分析比较,我们可知: Newton 法(5)式具有较高的收敛速度,但计算量大,在每一步迭代中,要计算n 个函数值f ,以及n2个导数值f'形成Jacobi 矩阵)('k X f ,而且要求)('k X f 的逆阵或者解一个n 阶线性方程组;简化的Newton 法( 6) 式,它用迭代初值X 0来计算)('k X f ,并在每个迭代步中保持不变,它能使每步迭代过程的计算量大为减少,但大大降低了收敛速度。修正Newton 法(7)与Newton 法(5)相比,在每步迭代过程中增加计算n 个函数值,并不增加求逆次数,然而收敛速度提高了。
2: BFGS 法【4-6】
非线性方程组一般形式为:方程组(1)将其转化为一个全局优化问题。构造
能量函数:)()(n n
i i x x x X X f X ,...,),(2112==Φ∑=求非线性方程组解的问题就转化为
求解能量函数极小值的问题。即给定一个充分小的实常数ε,搜索
)
(**2*1*,...,X n x x x =使得εφ<)(*X 则X *即是非线性方程组(1)对应的近似解。 2.1 BFGS 查分算法【4】
文献【4】将传统的BFGS 算法和查分算法有机融合,用来求解非线性方程组,效果显著,可以较为广泛地应用于非线性方程组的求解。BFGS 方法是由Broyden 、
Fletcher 、Goldfarb 和Shanno 等人在1970年提出的。它是一个拟牛顿方法,具有二次终止性、整体收敛性和超线性收敛性,且算法所产生的搜索方向是共轭的。BFGS 方法是一个有效的局部算法,用来求解极小值的。
例如方程组
⎪⎪⎩⎪⎪⎨⎧===n
n n n n A x x x f A x x x f A x x x f ),...,(...
),...,(),...,(2122121211 (8) 可将它够着适应度函数
∑=-=n i i i A x f X F 1|
)(|)( (9)
那么求非线性方程组(8)的根问题就转化成了求适应度函数)(X F 最小值的优化问题。这就是它最基本的思想。
DE 算法(差分进化算法)(文献【5】)具有良好的全局搜索能力,并具有对初始值、参数选择不敏感、鲁棒性强、原理简单、容易操作等优点,是一种较好的全局优化方法。但在优化后期DE 算法的收敛速度明显变慢,而且搜索结果仅获得满意解域而不是精确解。为了克服这些缺点,该文在DE 算法的进化后期阶段引入BFGS 方法,利用BFGS 方法的整体收敛性和超收敛性来加快收敛速度。BFGS 方法属于局部算法,其优化结果的优劣在很大程度上取决于初始值的选取,为此可以利用具有全局搜索能力的DE 算法提供给BFGS 方法良好的初始值。
2.2 改进的BFGS 变尺度法【4】
对于高维的大型问题(维数大于100),变尺度法由于收敛快、效果好,被认为是最好的优化方法之一。其中BFGS 法的数值稳定性较好,是最成功的一种变尺度法。BFGS 法中有2个非常关键的环节:求函数的偏导数和一维探索。这2个环