一类高阶牛顿迭代法及其在非线性两点边值问题中的应用

2019-08-17 07:59雍龙泉
关键词:迭代法线性方程组边值问题

雍龙泉

(陕西理工大学 数学与计算机科学学院, 陕西 汉中 723001)

非线性两点边值问题如下:

(1)

其在物理学、流体力学、材料力学、波动力学、控制理论等领域有着广泛的应用和重要的理论价值[1-3]。其研究主要分为两个方面:一是研究解的存在性;二是计算其数值解。关于边值问题解的存在性和唯一性的研究,在20世纪出现了大量文献,至今仍不断发表新的研究成果。但在解的存在性方面,目前研究较多的是正解的存在性[4-5]。

鉴于可以解析求解的问题甚少,所以边值问题的求解是较为困难的。常见计算二阶两点边值问题数值解的方法有打靶法、有限差分法等[1,6-8]。打靶法主要思路是恰当选择和调整初值的条件,对一系列初值问题进行求解,使其接近给定的边界条件。当g(t,x,x′)=p(t)x′+q(t)x+r(t)时,问题(1)则为线性两点边值问题。针对线性两点边值问题,可以采用有限差分法将其转化为线性方程组进行求解。对于非线性两点边值问题,其离散化后所得到的方程组是非线性的,因此就需要研究求解非线性方程组的快速算法。

本文研究了无奇异点的非线性两点边值问题的数值解,通过将其离散化,得到非线性方程组:

(2)

其中:xi表示函数x(t)在离散点ti处的函数值,即xi=x(ti);fi(x1,x2,…,xn):D⊆Rn→R是非线性函数,且充分可导;i=1,2,…,n(详细转化过程在本文第2部分)。

记向量x=(x1,x2,…,xn),向量函数F(x)=(f1(x),f2(x),…,fn(x))T,则方程组(2)等价于如下非线性方程:

F(x)=0

(3)

下面采用高阶牛顿法求解非线性方程组。

1 高阶牛顿法

求解非线性方程常见的方法有牛顿迭代法、修正牛顿迭代法以及智能优化算法等[9-15]。近年来,各类高阶牛顿迭代法成为研究的热点,相继出现了五阶牛顿迭代法[16-21]、七阶牛顿迭代法[22-24]、八阶牛顿迭代法[25-26]、九阶牛顿迭代法[27-28]等。当然,收敛阶数越高,需要付出的计算代价也就越大。因此,在构造高阶牛顿迭代法求解非线性方程组时,既需要考虑收敛阶,更需要考虑计算复杂性。文献[21]中给出的五阶牛顿迭代法公式简单,且计算量少,因此已成功应用于求解线性规划等问题[29-30]。

五阶牛顿迭代法步骤如下:

1) 输入

非线性方程组F(x)=(f1(x),f2(x),…,fn(x))T=0;

非线性方程组对应的雅克比矩阵F′(x);

初始迭代点x(0)∈Rn,终止条件ε;

令k=0。

2) 开始计算

③x(k+1)=z(k)+([F′(x(k))]-1-2[F′(y(k))]-1)F(z(k));

④ 如果(||x(k+1)-x(k)||+||F(x(k))||)<ε,停止,输出计算结果,否则进行下一步;

⑤k=k+1,转步骤①。

3) 输出计算结果

x*=x(k+1),F(x*)=F(x(k+1))

算法说明:实际计算过程中,若雅克比矩阵奇异或接近奇异,可以采用阻尼牛顿法进行处理。文献[21]证明了该方法在求解非线性方程组时具有五阶收敛速度。以下应用该五阶牛顿法求解非线性两点边值问题。

2 应用于非线性两点边值问题

下面给出两个非线性两点边值问题,通过将其转化为非线性方程组后,采用上述五阶牛顿迭代法进行求解,程序采用Matlab R2009a编写。设置x(0)=(1,1,…,1)∈Rn,终止条件ε=1×10-15。

算例1考虑如下非线性两点边值问题:

对区间t∈[0,1]做离散化处理,插入n个点:

这些分点满足

0=t0

于是区间被分成n+1等分,记

x(t0)=x0=0,x(t1)=x1,x(t2)=

x2,…,x(tn)=xn,x(tn+1)=xn+1=1

下面近似计算函数x(t)在这些插入点处的函数值xi,i=1,2,…,n。

利用有限差分法可知

得到如下有n个变量(xi,i=1,2,…,n)的非线性方程组:

fi(x1,x2,…,xn)=xi-1-2xi+xi+1+h2xi=0,

i=1,2,…,n

即:

若插入n=15个点,采用上述五阶牛顿迭代法进行计算,表1给出了这15个插入点处的数值解和精确解。

表1 算例1对应的数值解与精确解(n=15)

图1、2分别给出了n=15和n=30对应的数值解和精确解的示意图。

图1 n=15时对应的数值解和精确解的示意图

图2 n=30时对应的数值解和精确解的示意图

算例2考虑如下非线性两点边值:

该问题的解析解不易求出,下面直接计算数值解。

对区间t∈[0,1]做离散化处理,插入n个点:

这些分点满足

0=t0

于是区间被分成n+1等分,记

x(t0)=x0=0,x(t1)=x1,x(t2)=

x2,…,x(tn)=xn,x(tn+1)=xn+1=1

下面近似计算函数x(t)在这些插入点处的函数值xi,i=1,2,…,n。

利用

i=1,2,…,n

得到如下n个变量(xi,i=1,2,…,n)的非线性方程组:

即:

若插入n=15个点,采用上述五阶牛顿迭代法进行计算,表2给出了这15个插入点处的数值解和和对应的fi(x)值,i=1,2,…,15。

图3、4分别给出了n=15和n=30的数值解示意图。

表2 算例2对应的数值解(n=15)

图3 n=15时对应的数值解的示意图

3 结束语

本文通过把非线性两点边值问题的数值解转化为非线性方程组,进而采用高阶牛顿迭代法进行求解,且对文献[21]中的数值结果进行了更正。数值计算结果表明:该方法计算速度快(即使插入200个分点,计算耗时也不到2 s),且计算精度高,对此类问题较为有效。进一步可以考虑把该方法应用到实际工程问题中(如需源代码,请与笔者联系)。

猜你喜欢
迭代法线性方程组边值问题
求解大型广义绝对值方程的Picard-SS迭代法
迭代法求解一类函数方程的再研究
一类整系数齐次线性方程组的整数解存在性问题
星图上非线性分数阶微分方程边值问题解的存在唯一性
临界Schrödinger映射非齐次初边值问题的有限差分格式
求解非线性方程组的Newton迭代与Newton-Kazcmarz迭代的吸引域
求解复对称线性系统的CRI变型迭代法
Cramer法则推论的几个应用
多种迭代法适用范围的思考与新型迭代法
非线性m点边值问题的多重正解