数值分析

上传人:第*** 文档编号:34002450 上传时间:2018-02-19 格式:DOC 页数:21 大小:170.55KB
返回 下载 相关 举报
数值分析_第1页
第1页 / 共21页
数值分析_第2页
第2页 / 共21页
数值分析_第3页
第3页 / 共21页
数值分析_第4页
第4页 / 共21页
数值分析_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《数值分析》由会员分享,可在线阅读,更多相关《数值分析(21页珍藏版)》请在金锄头文库上搜索。

1、吉 林 农 业 大 学教 学 实 习 报 告学 院 信息技术学院 专 级 年 级 信息与计算科学三班 姓 名 广告歌 学 号 111111111 指 教 教 师 张红芹 2012 年 6 月 15 日实习名称 牛顿法、弦截法、共轭梯度法、最速下降法实习地点 信息技术学院六楼实习起止时间 2012 年 6 月 132012 年 6 月 15实习报告一、实验目的(1)学会用二分法、牛顿法、弦截法求方程的根;(2)学会用共轭梯度法、最速下降法求解方程组,熟悉 Matlab 编程环境。二、实验环境Windows XP MATLAB R2009b三、实验原理、二分法(1)取初始有根区间 (满足 ),以及

2、精度要求 , ;(2)若 或 ,则停止计算;(3)取 ,若 ,则置 ,否则置 ;(4)转(2)。、牛顿法设已知方程 的近似根 ,则在 附近 可用一阶泰勒多项近似代替.因此, 方程 可近似地表示为 .用 表示 的根,它与 的根差异不大. 设 ,由于 满足 解得重复这一过程,得到迭代格式这就是著名的牛顿迭代公式,它相应的不动点方程为、弦截法1、弦截法的数学原理弦截法是在牛顿法的基础上得出的求解非线性方程 的一种十分重要的插值方法。用牛顿法求解非线性方程的根时,每一步都要计算导数值,如果函数 比较复杂时,计算导数 往往比较困难。而弦截法使用差商来代替牛顿法中的导数值进行迭代,避免了计算函数的导数值,

3、并且收敛速度很快。设 是方程 的近似根,利用 构造一次插值多项式,并用 的根作为 的心得近似根 。由于(1)可以求出(2)上述迭代公式(2)可以看作牛顿法公式 中的导数 用差商取代的结果 。上式中 ,由此可以得到满足公式 (2)的点的序列,且点的序列 收敛于根 。2、弦截法的算法步骤根据弦截法的基本原理,可以得出如下算法步骤:1) 确定初始值 ,精度要求 ,最大迭代次数 N;2) 计算函数值 ;3) 利用公式(2)计算方程新的近似根值 ;4) 若满足 时便可停止迭代, 作为方程 的近似根,计算结5)否则取 ,重复利用公式(2)计算 ,知道满足要求。.共轭梯度法1、基本步骤在点 处选取搜索方向

4、,使其与前一次的搜索方向 关于 共轭,即 然后从点 出发,沿方向 求得 的极小值点 ,即 如此下去, 得到序列 。不难求得 的解为注意到 的选取不唯一,我们可取 由共轭的定义 可得:2.共轭梯度法的计算过程如下:第一步:取初始向量 , 计算第 步:计算、最速下降法1、原理从某个初始点 出发,沿 在点 处的负梯度方向求得 的极小值点 ,即 然后从 出发,重复上面的过程得到 。如此下去,得到序列 可以证明,从任一初始点 出发,用最速下降法所得到的序列 均收敛于问题使 最小化 的解,也就是方程组 的解。其收敛速度取决于 ,其中 , 分别为 A 的最小,最大特征值。2、迭代格式:给定初值 , 按如下方

5、法决定:四、实验题目(1)分别用牛顿法和弦截法求方程 的所有根。提示:找到有根区间;利用二分法给出 Newton 法初值及弦截法的两个初值,比较收敛的速度(2)利用共轭梯度法和最速下降法求解下列方程组,并进行比较五、步骤与实现、牛顿法function x_start,index,it=Newtonfang(fun1,fun2,x,ep,it_max)index=0;for k=1:it_maxx1=x;y=feval(fun1,x); z=feval(fun2,x);x=x-y/z;if abs(x-x1) a=-5;b=5;ep=1e-5;x=-3.23;it_max=50;fun1=inl

6、ine(x-1)3+3*(x-1)2)fun1 =Inline function:fun1(x) = (x-1)3+3*(x-1)2 fun2=inline(3*x2-2*x-4)fun2 =Inline function: fun2(x) = 3*x2-2*x-4 x_start,index,it=Newtonfang(fun1,fun2,x,ep,it_max)x_start =-2.0000index =1it =11、弦截法1.从 X 负半轴function root=Secant(f,a,b,esp) if(nargin=3) eps=1.0e-6;endf1=subs(sym(f)

7、,findsym(sym(f),a);f2=subs(sym(f),findsym(sym(f),b);if(f1=0)root1=a;endif(f2=0)root2=b;endif(f1*f20)disp(两端点函数值乘积大于 0!); return;elsetol=1; fa=subs(sym(f),findsym(sym(f),a);fb=subs(sym(f),findsym(sym(f),b); root=a-(b-a)*fa/(fb-fa);while(toleps)r1=root;fx=subs(sym(f),findsym(sym(f),r1);s=fx*fa;if(s=0)

8、root=r1;elseif(s0)root=b-(r1-b)*fb/(fx-fb);elseroot=a-(r1-a)*fa/(fx-fa);endendtol=abs(root-r1);endend y=secant(y-1)3+3*(y-1)2,-3,0)y =-2.00002.从 X 正半轴function y=xian(a,n,x01,x02,eps)%采用弦截法求方程的根%a 为方程所对应的多项式的系数%n 为 a 的最高次幂的级数%x01,x02 为初始值if nargin =2 %判定输入参数个数eps=1e-6;elseif nargineps*x(i)x(i+1)=x(i)

9、-(x(i)-x(i-1)*gfun(a,n,x(i)/(gfun(a,n,x(i)-gfun(a,n,x(i-1);tol=abs(x(i+1)-x(i); %判定误差i=i+1;endy=x(i); %输出迭代结果fprintf(迭代次数为%dn,i-2);function y=gfun(a,n,x); %求 f(x(i)的值y=0;for i=1:n+1y=y+a(i)*x(n+1-i);enda=1,-6,9,-4;n=3;x01=0;x02=10;f=xian(a,n,x01,x02,eps)迭代次数为 41f =1.0000M-文件:function y1=fun1(x)y1=(x

10、-1).3+3.*(x-1).2;x=-5:0.01:5;plot(x,fun1(x),b)、共轭梯度法function x,k=cg(A,b,ep,it_max)n=length(A);x=zeros(n,1);r=b-A*x;d=r;for k=1:it_maxa=(sum(r.*r)/(sum(A*d).*d);r1=r;s=a*d;x=x+s;r=r-A*s;if norm(s)A=4 -1 0;-1 4 -1;0 -1 4;b=1;0;1;ep=1e-10;it_max=2;x,k=cg(A,b,ep,it_max)x =0.2857 0.14290.2857k =2、最速下降法fu

11、nction x,k=fastest(A,b,ep);x0=zeros(size(b),1);x=x0;k=0;m=1000;tol=1;while tol=epr=b-A*x0;q=dot(r,r)/dot(A*r,r);x=x0+q*r;k=k+1; tol=norm(x-x0);x0=x;if k=mdisp(迭代次数太多,可能不收敛!);return;endendA=4 -1 0;-1 4 -1;0 -1 4;b=1;0;1;ep=1e-10; x,k=fastest(A,b,ep)Warning: Input arguments must be scalar. In fastest

12、at 2x =0.28570.14290.2857k =23六、结果分析从以上的程序可以看出一下几点结论1.二分法和迭代法均能解出方程的根。2.牛顿法具有较快的收敛速度,割线法比牛顿迭代法收敛慢,但迭代次数较少,每迭代 1 步,就只需计算 1 次 f(x)的值,且避免了求导,计算量比牛顿法少。3.迭代法对初值是敏感的,若初值选择的不合适可能导致迭代的效率很低,甚至发散的。七、心得体会通过短短几天的课程设计,我体会到了在计算机程序设计中团队的重要性!对于一个程序一个人很难以完成,即使可以,也很浪费时间。这时一个团队就是很重要的!在团队中要有一个和好的领导者,对整个任务进行分工与调配。团队中更为重

13、要的是合作精神,只有互相之间默契融洽的配合才能换来最终完美的结果。课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了更多有关牛顿法,弦截法,共轭梯度法,最速下降法与二分法的知识。我常常感觉,当我们的知识越来越丰富,学历越来越高,研究的领域越来越专、越来越深入时,往往会对专业问题的表达、描述更感兴趣。这使得我们可能会忽略生活中看似平常,看似朴实,却和我们的专业息息相关的小点滴。其实,真正的大师绝对不只是会写书,会写文章的专家,他们通过不断的探究将问题的本质看得很透,从而能用通俗的语言将之表达。我们除了要完成老师规定的任务、完成学科点规定的要求外,还应该看到所研究问题的本质,着眼于生活。八、参考资料1数值分析,林成森,科学出版;2数值分析实验,张红芹,高来斌;3MATLAB 程序设计教程,刘卫国,中国水利水电出版社。实际成绩评定指导教师意见:签 章 年 月 日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号