非线性方程牛顿迭代法与斯特芬森迭代法的研究与比较.doc
文本预览下载声明
非线性方程牛顿迭代法与斯特芬森迭代法的研究与比较
申林坚
(南昌航空大学 测试与光电工程学院 江西 南昌 330063)
摘要:本文针对一个具体的非线性方程进行研究,首先作出了了函数 的图像,大体判定其零点(即方程解)在(3,4)区间内,
接着用牛顿迭代法和斯特芬森迭代法进行求解分析,牛顿法的迭代公式为 ,
斯特芬森迭代法公式为
记录两种方法求得指定精度解所需迭代次数及所需计算时间,并对其优缺点
进行了分析。
关键词:非线性方程;牛顿迭代法;斯特芬森迭代法
引言
非线性是实际问题中经常出现的,并且在科学与工程计算中的地位越来越重要,很多我们熟悉的线性模型都是在一定条件下由非线性问题简化得到的,为得到
更符合实际的解答,往往需要直接研究非线性模型,从而产生非线性科学,它是21世纪科学技术发展的重要支柱。本论文通过对特定非线性方程进行求解,介绍了两种常用的迭代法牛顿迭代法和斯特芬森迭代法,详尽阐述了其各自的数学几何原理及优缺点比较,从而更深入的理解非线性方程的迭代法求解。
正文
一.作出的图像,确定隔根区间
在Matlab中输入以下指令并回车:
x=(-10:0.001:10);
y=3*x.^2-exp(x);
plot(x,y);
grid on;
图1
得到图1所示的图像,易知,当及时,无零点
将y轴方向放大,输入命令axis([-10 10 -2 2]),得到图2
图2
可知函数有三个零点,隔根区间为(-2,0),(0,2),(2,4)
将x轴方向放大,输入命令axis([-2 4 -2 2]),得到图3
图3
可将隔根区间进一步缩小为(-1,0),(0,1),(3,4)
二.牛顿迭代法求区间(3,4)中的根
对于方程,如果是线性函数,则它的求根是容易的。牛顿法实质上是一种线性化方法,其基本思想是将非线性方程逐步归结为某种非线性方程来求解。
设已知方程有近似根(假定),将函数在点展开,有
,
于是方程可近似表示为
.
这是个线性方程,记其根为,则的计算公式为
这就是牛顿法。
牛顿法有明显的几何解释。方程的根可解释为曲线与x轴的交点的横坐标。设是根的某个近似值,过曲线上横坐标为的点引切线,并将该切线与x轴的交点的横坐标作为的新的近似值。注意到切线方程为
这样求得的值必满足。由于这种几何背景,牛顿法亦称切线法。
下面列出牛顿法的计算步骤:
步骤1 准备 选定初始近似值,计算,
步骤2 迭代 按公式
迭代一次,得到新的近似值,计算
步骤3 控制 如果满足哦或,则终止迭代,以作为所求的根;否则转步骤4.此处是允许误差,而
其中C是取绝对误差或相对误差的控制常数,一般可取C=1.
步骤4 修改 如果迭代次数达到预先指定的次数N,或者,则方法失败;否则以代替转步骤2继续迭代
Matlab计算程序如下,取初始迭代值=3:
i=0;
y=3;
z=1;
while(i=100z=10^(-8))
x=y;
y=x-(3*x^2-exp(x))/(6*x-exp(x));
if abs(y)1
z=abs(y-x);
else
z=abs((y-x)/y);
end
i=i+1;
end
format long;
disp(y);
disp(i);
输出结果为y= 3.733079028632816,i=9
可知,使用牛顿迭代法,初值为3时,需迭代9次可使eps10^-8,近似解为3三.斯特芬森迭代法求区间(3,4)中的根
埃特金方法不管原序列{}是怎样产生的,对{}进行加速计算,得到序列{}。如果把埃特金加速技巧与不动点迭代结合,可得到如下的迭代法:
称为斯特芬森迭代法。它可以这样理解,我们要求的根,令,,已知的近似值及,其误差分别为
把误差“外推到零”,即过及两点做线性插值函数,它与x轴交点就是,即方程
的解
斯特芬森迭代法的另一种表达方式如下:
其中
实验表明,即便用不动点迭代法不收敛,用斯特芬森迭代法仍可能收敛。
取,迭代初值为3进行迭代,Matlab程序如下:
i=0;
y=3;
z=1;
while(i=1000z=10^(-8))
x=y;
y1=log(3*x^2);
y=x-(y1-x)^2/(log(3*y1^2)-2*y1+x);
if abs(y)1
z=abs(y-x);
else
z=abs((y-x)/y);
end
i=i+1;
end
format long;
disp(y);
disp(i);
输出结果为y= 3.733079028632815,i=4
显示全部