《数学实验报告样本.doc》由会员分享,可在线阅读,更多相关《数学实验报告样本.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数学实验报告实验序号: 3 日期: 2013年 12 月 14 日班级应数一班姓名陈菲学号实验名称求代数方程的近似根问题背景描述:求代数方程的根是最常见的数学问题之一,当是一次多项式时,称为线性方程,否则称之为非线性方程当是非线性方程时,由于的多样性,尚无一般的解析解法可使用,但如果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求本实验介绍一些求方程实根的近似值的有效方法,要求在使用这些方法前先确定求根区间,或给出某根的近似值实验目的:1. 了解代数方程求根求解的四种方法:对分法、迭代法、牛顿切线法2. 掌握对分法、迭代法、牛顿切线法求方程近似根的基本
2、过程。实验原理与数学模型:1对分法对分法思想:将区域不断对分,判断根在某个分段内,再对该段对分,依此类推,直到满足精度为止对分法适用于求有根区间内的单实根或奇重实根设在上连续,即 ,或,则根据连续函数的介值定理,在内至少存在一点 ,使下面的方法可以求出该根:令,计算;若,则是的根,停止计算,输出结果若 ,则令,若,则令,;,有、以及相应的(3) 若 (为预先给定的精度要求),退出计算,输出结果;反之,返回(1),重复(1),(2),(3)以上方法可得到每次缩小一半的区间序列,在中含有方程的根当区间长很小时,取其中点为根的近似值,显然有以上公式可用于估计对分次数2. 迭代法迭代法的基本思想:由方
3、程构造一个等价方程从某个近似根出发,令,可得序列,这种方法称为迭代法若 收敛,即,只要连续,有即可知,的极限是的根,也就是的根当然,若发散,迭代法就失败迭代过程收敛的常用判别标准:当根区间较小,且对某一,明显小于1时,则迭代收敛 2) 迭代法的加速:a) 松弛法:若与同是的近似值,则是两个近似值的加权平均,其中称为权重,现通过确定看能否得到加速迭代方程是:其中,令,试确定:当时,有,即当,时,可望获得较好的加速效果,于是有松弛法:,b) Altken方法:,是它的根,是其近似根设,因为,用差商近似代替,有 ,解出,得由此得出公式 ;,这就是Altken 公式。3. 牛顿(Newton)法(牛顿
4、切线法)1) 牛顿法的基本思想:是非线性方程,一般较难解决,多采用线性化方法记:是一次多项式,用作为的近似方程的解为 记为,一般地,记 即为牛顿法公式。实验所用软件及版本: Matlab R2012b主要内容(要点):分别用对分法、普通迭代法、松弛迭代法、Altken 迭代法、牛顿切法线等5种方法,求方程 的正的近似根,(建议取 )实验过程记录(含基本步骤、主要程序清单及异常情况记录等):1.对分法syms x fx;a=0.001;b=3;fx=0.5*x-sin(x);x=(a+b)/2;k=0;ffx=subs(fx,x,x);if ffx=0; disp(the root is:,nu
5、m2str(x)else disp(k ak bk f(xk) while abs(ffx)0.0001&ab; disp(num2str(k), ,num2str(a), ,num2str(b), ,num2str(ffx) fa=subs(fx,x,a);ffx=subs(fx,x,x); if fa*ffx0.0001; disp(num2str(k), ,num2str(x), ,num2str(ffx); x=subs(gx,x,x);ffx=subs(fx,x,x);k=k+1;enddisp(num2str(k), ,num2str(x), ,num2str(ffx)fprint
6、f(所求的解是:x=%f,迭代步数是:%d/n,x,k)【调试结果】0 1.1 -0.341211 1.7824 -0.2 1.9554 0.3 1.8539 -0.4 1.9204 0.5 1.879 -0.6 1.9057 0.7 1.8889 -0.8 1.8997 0.9 1.8928 -0.10 1.8972 0.11 1.8944 -0.12 1.8962 0.13 1.895 -0.14 1.8958 0.15 1.8953 -0.16 1.8956 9.4692e-005所求的解是:x=1.,迭代步数是:163.松弛迭代法syms fx gx x dgx;gx=sin(x)*2
7、;fx=0.5*x-sin(x);dgx=diff(gx,x);x=1.8;k=0;ggx=subs(gx,x,x);ffx=subs(fx,x,x);dgxx=subs(dgx,x,x);disp(k x w)while abs(ffx)0.0001; w=1/(1-dgxx); disp(num2str(k), ,num2str(x), ,num2str(w) x=(1-w)*x+w*ggx;k=k+1; ggx=subs(gx,x,x);ffx=subs(fx,x,x);dgxx=subs(dgx,x,x);end disp(num2str(k), ,num2str(x), ,num2s
8、tr(w)fprintf(所求的解是:x=%f,迭代步数是:%dn,x,k)【调试结果】k x w0 1.8 0.687571 1.9016 0.606242 1.8955 0.60624所求的解是:x=1.,迭代步数是:24.altken法syms fx gx x ;gx=sin(x)*2;fx=0.5*x-sin(x);disp(k x x1 x2)x=1.5;k=0;ffx=subs(fx,x,x);while abs(ffx)0.0001; u=subs(gx,x,x);v=subs(gx,x,u); disp(num2str(k), ,num2str(x), ,num2str(u),
9、 ,num2str(v) x=v-(v-u)2/(v-2*u+x);k=k+1;ffx=subs(fx,x,x);end disp(num2str(k), ,num2str(x), ,num2str(u), ,num2str(v)fprintf(所求的解是:x=%f,迭代步数是:%dn,x,k)【调试结果】k x x1 x20 1.5 1.995 1.82271 1.8672 1.9128 1.88422 1.8952 1.8957 1.89543 1.8955 1.8957 1.8954所求的解是:x=1.,迭代步数是:35.牛顿法syms x fx gx;fx=0.5*x-sin(x);g
10、x=diff(fx,x);x1=0.8;x2=1.5;x3=4;k=0;disp(k x1 x2 x3)fx1=subs(fx,x,x1);fx2=subs(fx,x,x2);fx3=subs(fx,x,x3);gx1=subs(gx,x,x1);gx2=subs(gx,x,x2);gx3=subs(gx,x,x3);while abs(fx1)0.0001|abs(fx2)0.0001|abs(fx3)0.0001; disp(num2str(k), ,num2str(x1), ,num2str(x2), ,num2str(x3) x1=x1-fx1/gx1;x2=x2-fx2/gx2;x3
11、=x3-fx3/gx3;k=k+1; fx1=subs(fx,x,x1);fx2=subs(fx,x,x2);fx3=subs(fx,x,x3); gx1=subs(gx,x,x1);gx2=subs(gx,x,x2);gx3=subs(gx,x,x3);end disp(num2str(k), ,num2str(x1), ,num2str(x2), ,num2str(x3) fprintf(所求的解是:x1=%f,x2=%f,x3=%f,迭代步数:%dn,x1,x2,x3,k)【调试结果】k x1 x2 x30 0.8 1.5 41 -0.81335 2.0766 1.61042 0.896
12、79 1.9105 1.973 -1.7856 1.8956 1.89844 -1.9037 1.8955 1.89555 -1.8955 1.8955 1.8955所求的解是:x1=-1.,x2=1.,x3=1.,迭代步数:5【情况记录】1.对分法简单,然而,若在是有几个零点时,只能算出其中一个零点,它不能求重根,也不能求虚根.另一方面,即使在上有零点,也未必有。这就限制了对分法的使用范围。对分法只能计算方程的实根。对分法的收敛速度较慢,它常用来试探实根的分布区间,或求根的近似值寻找满足定理条件的等价形式是难于做到的。事实上,如果 为的零点,若能构造等价形式而,由的连续性,一定存在的邻域,其
13、上有,这时若初值迭代也就收敛了。由此构造收敛迭代式有两个要素,其一,等价形式应满足;其二,初值必须取自的充分小邻域,这个邻域大小决定于函数,及做出的等价形式。松弛法的加速效果明显,甚至不收敛的迭代函数经加速后也能获得收敛松弛法要先计算,在使用中有时不方便,而Altken 公式,它的加速效果是十分明显的,它同样可使不收敛的迭代格式获得收敛。5.牛顿法的收敛速度明显快于对分法。牛顿法也有局限性。牛顿法至少是二阶收敛的,而在重根附近,牛顿法是线性收敛的,且重根收敛很慢。另外,在牛顿法中,选取适当迭代初始值是求解的前题,当迭代的初始值在某根的附近时迭代才能收敛到这个根,有时会发生从一个根附近跳向另一个
14、根附近的情况,尤其在导数数值很小时。实验结果报告及实验总结:调试结果:1.对分法所求的解是:x=1.,迭代步数是:132.普通迭代法所求的解是:x=1.,迭代步数是:163.松弛迭代法所求的解是:x=1.,迭代步数是:24.altken法所求的解是:x=1.,迭代步数是:35.牛顿法所求的解是:x1=-1.,x2=1.,x3=1.,迭代步数:5总结:在调试和运行的过程中,选取不同的等价方程和不同的初值,得到的结果不同,精确度也有相差异。但五种方法所得的数值相近,基本在误差允许范围内。且从运行结果知,相对而言,二分法和普通迭代法的收敛速度过慢,不是最佳方法。松弛迭代法和altken法的加速效果是明显的。牛顿法的收敛速度也较快,但需要得出原函数的导函数,在某些情况下是不可行的。故在这五种方法中,相较而言,松弛迭代法和altken法更为可行。思考与深入:通过本实验加深了解了求方程实根的近似值的有效方法。学习并掌握了用对分法、迭代法、牛顿切线法求方程近似根的基本过程。并认识到对于不同的题目,需要确定好求根区间,或给出某根的近似值这对于结果的精度有很大影响。同时,对于自身,要深刻了解对分法、迭代法、牛顿切线法求方程近似根四种方法的基本思想,熟练掌握编程语句,更快更准确且熟练地设计出程序。教师评语: