非线性方程牛顿迭代法与斯特芬森迭代法的研究与比较讲课教案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

非线性方程牛顿迭代法与斯特芬森迭代法的研究与比较
非线性方程牛顿迭代法与斯特芬森迭代法的研究与比较
申林坚
(南昌航空大学 测试与光电工程学院 江西 南昌 330063)
摘要:本文针对一个具体的非线性方程032=-x e x 进行研究,首先作出了了函数
x
e x x
f -=2
3)(的图像,大体判定其零点(即方程解)在(3,4)区间内, 接着用牛顿迭代法和斯特芬森迭代法进行求解分析,牛顿法的迭代公式为
)
()
(1k k k k x f x f x x '-=+, 斯特芬森迭代法公式为
),
(),(,
2)(21k k k k k
k k k k k k y z x y x y z x y x x ϕϕ==+---=+
记录两种方法求得指定精度解所需迭代次数及所需计算时间,并对其优缺点 进行了分析。

关键词:非线性方程;牛顿迭代法;斯特芬森迭代法
引言
非线性是实际问题中经常出现的,并且在科学与工程计算中的地位越来越重要,很多我们熟悉的线性模型都是在一定条件下由非线性问题简化得到的,为得到
更符合实际的解答,往往需要直接研究非线性模型,从而产生非线性科学,它是21世纪科学技术发展的重要支柱。

本论文通过对特定非线性方程032=-x e x 进行求解,介绍了两种常用的迭代法牛顿迭代法和斯特芬森迭代法,详尽阐述了其各自的数学几何原理及优缺点比较,从而更深入的理解非线性方程的迭代法求解。

正文
一.作出)(x f 的图像,确定隔根区间 在Matlab 中输入以下指令并回车:
x=(-10:0.001:10); y=3*x.^2-exp(x); plot(x,y);
grid on ;
-10
-8-6-4-20246810
4
图1
得到图1所示)(x f 的图像,易知,当10-<x 及10>x 时,)(x f 无零点 将y 轴方向放大,输入命令axis([-10 10 -2 2]),得到图2
-10
-8-6-4-20246810
-2-1.5-1-0.500.511.5
2
图2
可知函数有三个零点,隔根区间为(-2,0),(0,2),(2,4) 将x 轴方向放大,输入命令axis([-2 4 -2 2]),得到图3
-2
-101234
-2-1.5-1-0.500.511.5
2
图3
可将隔根区间进一步缩小为(-1,0),(0,1),(3,4)
二.牛顿迭代法求区间(3,4)中的根
对于方程0)(=x f ,如果)(x f 是线性函数,则它的求根是容易的。

牛顿法实质上是一种线性化方法,其基本思想是将非线性方程0)(=x f 逐步归结为某种非线性方程来求解。

设已知方程0)(=x f 有近似根k x (假定0)(≠'k x f ),将函数在点k x 展开,有
))(()()(k k k x x x f x f x f -'+≈,
于是方程0)(=x f 可近似表示为
0))(()(=-'+k k k x x x f x f .
这是个线性方程,记其根为1+k x ,则1+k x 的计算公式为
,...,1,0,)
()
(1='-
=+k x f x f x x k k k k 这就是牛顿法。

牛顿法有明显的几何解释。

方程0)(=x f 的根*x 可解释为曲线)(x f y =与x 轴的交点的横坐标。

设k x 是根*x 的某个近似值,过曲线)(x f y =上横坐标为k x 的点k P 引切线,并将该切线与x 轴的交点的横坐标1+k x 作为*x 的新的近似值。

注意到切线方程为
))(()(k k k x x x f x f y -'+=
这样求得的值1+k x 必满足0))(()(=-'+k k k x x x f x f 。

由于这种几何背景,牛顿法亦称切线法。

下面列出牛顿法的计算步骤:
步骤1 准备 选定初始近似值0x ,计算)(00x f f =,)(00x f f '=' 步骤2 迭代 按公式
01f f x x '-
= 迭代一次,得到新的近似值1x ,计算)(),(1111x f f x f f '='=
步骤3 控制 如果1x 满足哦1εδ<或21ε<f ,则终止迭代,以1x 作为所求的根;否则转步骤4.此处21,εε是允许误差,而
时,当时当C x x x x C x x x ≥-<-=11
01101,,

其中C 是取绝对误差或相对误差的控制常数,一般可取C=1.
步骤4 修改 如果迭代次数达到预先指定的次数N ,或者01='f ,则方法失败;否则以),,(111f f x '代替),,(000f f x '转步骤2继续迭代
Matlab 计算程序如下,取初始迭代值0x =3:
i=0; y=3; z=1;
while (i<=100&&z>=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次可使eps<10^-8,近似解为3.73307903
三.斯特芬森迭代法求区间(3,4)中的根
埃特金方法不管原序列{k x }是怎样产生的,对{k x }进行加速计算,得到序列{k x }。

如果把埃特金加速技巧与不动点迭代结合,可得到如下的迭代法:
,...1,0,
),
(),(2)
(12
=-===+--+k x x y z x y k k k k k x y z x y k k k k k k ϕϕ
称为斯特芬森迭代法。

它可以这样理解,我们要求)(x x ϕ=的根*x ,令
x x x -=)()(ϕε,0)()(***=-=x x x ϕε,已知*x 的近似值k x 及k y ,其误差分别为
k
k k k k k
k k k k y z y y y x y x x x -=-=-=-=)()()()(ϕεϕε
把误差“外推到零”,即过())(,k k x x ε及())(,k k y y ε两点做线性插值函数,它与x 轴交点就是1+k x ,即方程
0)()
()()(=---+
k k
k k k k x x x y x y x εεε
的解
12
2)()()()()(+=+---=---=k k
k k k k k k k k k k k x x y z x y x x y x y x x x εεε
斯特芬森迭代法的另一种表达方式如下:
,...,1,0),(1==+k x x k k ψ
其中
()[].)(2))(()(2
x
x x x x x x +---
=ϕϕϕϕψ
实验表明,即便用不动点迭代法不收敛,用斯特芬森迭代法仍可能收敛。

1.取)3ln()(2x x =ϕ,迭代初值为3进行迭代,Matlab 程序如下:
i=0; y=3; z=1;
while (i<=1000&&z>=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;
可知,使用斯特芬森迭代法,取不动点函数为)3ln()(2x x =ϕ,初值为3时,需迭代4次可使eps<10^-8,近似解为3.73307903,与牛顿迭代法结果吻合。

2.取x e x x x +-=23)(ϕ,迭代初值为3进行迭代,Matlab 程序如下:
i=0; y=3; z=1;
while (i<=1000&&z>=10^(-8)) x=y;
y1=3*x^2-exp(x)+x;
y=x-(y1-x)^2/(3*y1^2-exp(y1)+y1-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.733079028632814,i=147;
可知,使用斯特芬森迭代法,取不动点函数为x e x x x +-=23)(ϕ,初值为3时,需迭代147次可使eps<10^-8,近似解为3.73307903
3.取3
)(x
e x =ϕ,迭代初值为3进行迭代,Matlab 程序如下:
i=0; y=3; z=1;
while (i<=1000&&z>=10^(-8)) x=y;
y1=sqrt(exp(x)/3);
y=x-(y1-x)^2/(sqrt(exp(y1)/3)-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=10;
可知,使用斯特芬森迭代法,取不动点函数为3)(x
e x =ϕ,初值为3时,需迭
代10次可使eps<10^-8,近似解为3.73307903
由以上三种不同迭代函数可知,迭代函数不同,斯特芬森迭代法的迭代次数不同。

综合比较
牛顿法的迭代函数固定,收敛速度较快,但求)(x f '可能比较繁琐
斯特芬森迭代法收敛速度快,但要选择合适的迭代函数,因次如何构造一个合适的迭代函数成为关键。

参考文献
[1]蔡旭晖 刘卫国 蔡立燕 MATLAB 基础与应用教程 北京:人民邮电出版社 2009 [2]李庆扬 王能超 易大义 数值分析(第5版) 北京:清华大学出版社 2008
[3]高成 赖志国 Matlab 图像处理与应用(第2版) 北京:国防工业出版社 2007
The research and comparison of Newton's iterative method and
Steffen Sen iteration method for nonlinear equation
Shen Linjian
(Nanchang Institute of test and opto electronic engineering, Jiangxi University of Aeronautics and Astronautics, Nanchang 330063)
Abstract: In this paper, a specific nonlinear equation is studied, firstly, the function of the image, generally determine its zero (the equation solution) in the (3,4) interval, followed by Newton iterative method and Steffen Sen iteration method for analysis, Newton iterative formula for, Steffen Sen iterative formula for the record of the two methods to obtain the specified accuracy of the required number of iterations and the required calculation time, and its advantages and disadvantages are analyzed.
Key words: nonlinear equation; Newton iterative method; Steffen Sen iteration method
个人心得体会
首先,我觉得课堂教学条件比较差,那么大的一个教室坐满了人,不能保证每个学生能够听清,看清每一个知识点。

因此建议以后可开展小班教学。

其次,坦率得说,关于这门课的知识点,我完全是通过自学获得的,从课堂上得到的少之又少,并不是老师讲的不好,只是数学本就枯索抽象,在课堂上并不能马上领悟,因而没有兴趣继续听下去。

我相信,很大一部分同学是跟我有同感的。

另外,大作业这种考查形式还是不错的,并不是很难,但要花功夫。

在完成大作业的过程中,其实是一个对所学知识深入在理解的过程,通过与matlab相结合,提升了自己运用所学知识解决实际问题的能力。

我是比较赞同老师对学生严格要求的,但并不是给一个高高在上的目标,让学生难以企及,而是要循循善诱,但凡有一点上进心都能有所收获,在这点上我感觉郑老师做得不错。

最后,我觉得在教学过程中可以引进给出问题,课堂小组讨论这种形式。

让学生自己来学习。

当然,这是建立在小班教学的基础上的。

以上仅是个人的一点拙见,请老师参考。

相关文档
最新文档