雍龙泉
(陕西理工大学 数学与计算机科学学院, 陕西 汉中 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)
下面采用高阶牛顿法求解非线性方程组。
求解非线性方程常见的方法有牛顿迭代法、修正牛顿迭代法以及智能优化算法等[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]证明了该方法在求解非线性方程组时具有五阶收敛速度。以下应用该五阶牛顿法求解非线性两点边值问题。
下面给出两个非线性两点边值问题,通过将其转化为非线性方程组后,采用上述五阶牛顿迭代法进行求解,程序采用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时对应的数值解的示意图 本文通过把非线性两点边值问题的数值解转化为非线性方程组,进而采用高阶牛顿迭代法进行求解,且对文献[21]中的数值结果进行了更正。数值计算结果表明:该方法计算速度快(即使插入200个分点,计算耗时也不到2 s),且计算精度高,对此类问题较为有效。进一步可以考虑把该方法应用到实际工程问题中(如需源代码,请与笔者联系)。3 结束语