数值分析实验报告
- 格式:doc
- 大小:342.00 KB
- 文档页数:9
数值分析实验报告实验名称:求解非线性方程xx f =)(当2=x 时的函数值专 业: 姓 名: 学 号:实验目的:1、熟悉掌握matlab 的基本操作; 2、熟悉非线性方程的算法。
实验仪器:PC 机、matlab 软件 实验内容: 一、问题的提出题目:求解非线性方程xx f =)(当2=x 时的函数值要求:使用不同的求解方法 二、作业环境本题目要求用计算机编程的方法做出非线性方程的函数值求解,使用不同的数值分析方法求解。
实验使用matlab 编程,对于不同的计算方法进行时间度和计算精度对比,分析误差产生原因以及消除误差过程。
三、实验步骤 1、牛顿迭代法将方程变形为2)(2-=x x f ,及原问题转化成求解方程0)(=x f 的根的问题。
迭代法的基本思想是将非线性方程0)(=x f同解变换成便于迭代形式)(x x ϕ=然后取定一个初值0x ,按照迭代格式)(1n n x x ϕ=+进行迭代计算。
而牛顿迭代法是用一种间接而特殊的方法来确定)(x ϕ。
下图具体推导牛顿迭代公式,并且用几何方法来说名牛顿迭代公式的收敛性。
假设非线性方程为0)(=x f(1.1)令)(x f y =(1.2)它的反函数为)(y F x =(1.3)如果方程(1.1)中的左端函数)(x f 在区间],[b a 上连续,有且只有一个实根,则有0)()(<b f a f现在假设α=x 是方程(1.1)的一个实根,其中],[b a ∈α,则有0)(=αf(1.4)和)0(F =α (1.5)如果对反函数(1.3)在y 点展开成台劳级数,则根据式(1.5)有+-+-+=2''')0(!2)()0)(()()0(y y F y y F y F F α (1.6)如果取展开式(1.6)中前两项,可得y y F y F )()('-≈α再利用反函数与反函数的导数概念,即)(1)(),(),(''x f y F y F x x f y ===则有)()('x f x f x -≈α (1.7)现在,取式(1.7)的右端作为)(x ϕ,就可以得到方程(1.1)的等价形式为)()('x f x f x x -= (1.8)可以验证,当0)('≠x f 时,方程(1.1)与方程(1.8)是同解的。
式(1.8)称为牛顿迭代公式。
在区间],[b a 上取一个初值0x ,就可以得到牛顿迭代格式)()(11++-=n n n n x f x f x x (1.9)实现过程如下: ticformat long a=1;b=0.0000000001; x1=a;f1=x1*x1-2; while abs(f1)>b f1=x1*x1-2; f2=2*x1; x1=x1-(f1/f2); end x1 toc运行截图:2、插值法在牛顿迭代公式中,除了要涉及到函数值的计算,还涉及到函数导数值的计算,这在实际应用中有时就显得不太方便。
如果将牛顿迭代公式中的导数用差商bx b f x f ax a f x f ----)()()()(或(1.10)来代替,则可以分布得到如下的迭代公式,即)()()(x f a f x f a x x x ---= (1.11)或)()()(x f b f x f b x x x ---= (1.12)式(1.10)与式(1.11)称为插值迭代公式。
下面分两种情形来讨论插值法的几何解释,以便确定如何应用这两个迭代公式。
第一种情形:在区间],[b a 上,)('x f 与)(''x f 同号。
过A 与B 两点作弦AB ,其方程为ab a f b f ax a f y --=--)()()(不难解出该弦与X 轴的交点(令0=y 即可解出)1x 为)()()(1a f b f a f b a a x ---= (1.12)在曲线)(x f y =上横坐标为1x 的点为1A 。
再过1A 于B 作弦B A 1,弦B A 1与X 轴的交点2x 为)()()(11112x f b f x f b x x x ---=(1.13)实际上只要在式(1.12)的右端将a 用1x 来代替即可求出2x 。
曲线)(x f y =上横坐标为2x 的点为2A 。
如此继续做下去,在曲线)(x f y =上便得到点列,,,21A A A ,同时,在X 轴上得到点列 ,,,210x x a x =,它们将同时趋向于曲线)(x f y =与X 轴的交点a x =。
这就说明,在这种情形下,如果去初值a x =0,则迭代格式)()()(1n n n n n x f b f x f b x x x ---=+计算得到的序列 ,,,,,210n x x x a x =收敛于方程0)(=x f 的根。
第二种情形:在区间],[b a 上,)('x f 与)(''x f 异号。
过A 与B 两点作弦AB ,其方程为ab a f b f ax a f y --=--)()()(不难解出该弦与X 轴的交点(令0=y 即可解出)1x 为)()()(1b f b f a f a b b x ---= (1.14)在曲线)(x f y =上横坐标为1x 的点为1B 。
再过A 于1B 作弦1AB ,弦1AB 与X 轴的交点2x 为)()()(11112x f a f x f a x x x ---=(1.15)实际上只要在式(1.14)的右端将b 用1x 来代替即可求出2x 。
曲线)(x f y =上横坐标为2x 的点为2B 。
如此继续做下去,在曲线)(x f y =上便得到点列,,,21B B A ,同时,在X 轴上得到点列,,,,210 x x b x =它们将同时趋向于曲线)(x f y =与X 轴的交点α=x 。
这就说明,在这种情形下,如果取初值b x =0,则迭代格式)()()(1n n n n n x f a f x f a x x x ---=+计算得到的序列 ,,,,,210n x x x b x =收敛于方程0)(=x f 的根。
实现过程如下: ticformat long a1=3; a2=2;s=0. 0000000001; x0=a1; x1=a2; x2=0;while abs(x0-x1)>sx0=x1-((x1*x1-2)/((x1*x1-2)-(x0*x0-2)))*(x1-x0); x2=x1; x1=x0; x0=x2; end x1 toc运行截图:3、二分法二分法的思想相当简单,其数学基础为零点存在定理。
具体做法如下:假设函数)(x f 在],[b a 上连续,且0)()(<∙b f a f ,令20b a x +=,计算)(0x f 。
如果)(0x f 。
如果)(0x f 与)(a f 同号,则令;,101b b x a ==否则,令011,x b a a ==,由此可知)(x f 必在],[11b a 中有雾点;再对分,令2111b a x +=,计算,),(1 x f 如此反复,可得到有根的区间套⊃⊃⊃⊃],[],[],[11k k b a b a b a对分k 次后,区间长度为kk k a b a b 2-=-,如此下去,{}k a ,{}k b 必收敛于一点*x,此点即为0)(=x f 的一个根。
如果以中点2kk k b a x +=作为*x 的近似,则误差为11*2+--=-≤-k k k k a b x x xx实现过程如下: ticformat long a=0; b=2; x1=a; x2=b;f1=x1*x1-2; f2=x2*x2-2;step=0.0000000001; ii=0;while abs(x1-x2)>step ii=ii+1;x3=(x1+x2)/2; f3=x3*x3-2; if f3~=0if f1*f3<0 x2=x3; elsex1=x3; end end end x1 toc运行截图:4、斯蒂芬森加速迭代法通常情况下,迭代法是线性收敛的,而线性收敛是比较慢的收敛,因此需要改进迭代公式,提高收敛速度,下面讨论斯蒂芬森加速迭代法。
令)(),(0000y z x y ϕϕ==,假设L ≈)('ξϕ,由拉格朗日中值定理,可得到:)(*0*0x x L x y -≈-)(*0*0x y L x z -≈-将以下两式相除,得到:*0*0*0*0xy x x xz x y --=--解方程得到:002000000200*2)(2x y z x y x x y z y z x x +---=+--=将上式的右端作为*x 的近似值,记作1x ,即:00200012)(x y z x y x x +---=一般情形,由k x 计算k k z y ,,然后再计算出1+k x ,其迭代公式如下:,2,1,0(,2)()()(21=+---===+k x y z x y x x y z x y kk k k k k k k k k k ϕϕ该算法就是斯蒂芬森加速迭代,对此,有如下结论: 若*x 为xx x x x x x +---=)(2))(())(()(2ϕϕϕϕψ的不动点,则*x 为)(x ϕ的不动点;反之,若*x 为)(x ϕ的不动点,设)(''x ϕ存在,1)'('≠x ϕ,则*x 为)(x ψ的不动点,且斯蒂芬森加速迭代法是平方收敛的。
实现过程如下:ticformat long x0=2; x1=1;s=0.0000000001; k=-1;while abs(x0-x1)>s k=k+1; ka=x0*x0+x0-2; ab=a*a+a-2; bx1=x0-((a-x0)*(a-x0))/(b-2*a+x0); c=x0; x0=x1; x1=c; x0 end toc运行截图:5、埃特金迭代法埃特金迭代法,其基本原理与简单迭代法相同,只是在两个方面作了改进:一是在不满足收敛条件的情况下,使实际的迭代过程能收敛;二是在收敛的情况下,尽量加快收敛速度,减少迭代次数,从而降低时间复杂度。
给定:)(x x ϕ=取初值为0x ,经过一次迭代有)(01x x ϕ=,由微分中值定理,即有:))(('*0*1x x x x -=-ξϕ其中,ξ位于0x 与*x 之间。
若)('x ϕ在0x 与*x 之间变化不大,可令其恒为常数K ,有:)(*0*1x x K x x -≈-再迭代一次有)(12x x ϕ=,同时有:)(*1*2x x K x x -≈-联立上面两个方程组,消去未知数K ,有:*1*0*2*1xx x x xx x x --≈--故:21021222102120*2)(2x x x x x x x x x x x x x +---=+--=这样就构造出不含关于微商信息的公式了。