数值计算课程设计报告(非线性方程求根)

上传人:第*** 文档编号:57348193 上传时间:2018-10-21 格式:DOCX 页数:18 大小:470.08KB
返回 下载 相关 举报
数值计算课程设计报告(非线性方程求根)_第1页
第1页 / 共18页
数值计算课程设计报告(非线性方程求根)_第2页
第2页 / 共18页
数值计算课程设计报告(非线性方程求根)_第3页
第3页 / 共18页
数值计算课程设计报告(非线性方程求根)_第4页
第4页 / 共18页
数值计算课程设计报告(非线性方程求根)_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《数值计算课程设计报告(非线性方程求根)》由会员分享,可在线阅读,更多相关《数值计算课程设计报告(非线性方程求根)(18页珍藏版)》请在金锄头文库上搜索。

1、数 值 计 算 方 法课 程 设 计 报 告课程设计名称: 数值计算方法 课程设计题目: 非线性方程求根 年 级 专 业: 组员姓名学号: 指 导 教 师: 完 成 时 间: 非线性方程求根一、一、问题提出问题提出随着科学技术,生产力经济的发展,在科学与工程计算中存在着大量方程求根问题,例如贷款购房问题,工厂的最佳订货问题等都需要求解一类非线性方程的根,首先根据实际问题列出数学模型,确定变量,给出各个条件及相关函数;然后对建立的模型进行具体分析和研究,选择合适的求解方法;编写函数的程序,用计算机求出方程的解,通过所求解分析具体情况求解非线性方程的问题有以下几种基本方法。二分法简单易行,但收敛较

2、慢,仅有线性收敛速度。而且该方法不能用于求偶数重根或复根,但可以用来确定迭代法的初始值。牛顿法是方程求根中常用的一种迭代方法,它除了具有简单迭代法的优点外,还具有二阶收敛速度(在单根邻近处)的特点,但牛顿法对初始值选取比较苛刻(必须充分靠近方程的根) ,否则牛顿法可能不收敛。弦截法是牛顿法的一种修改,虽然比牛顿法收敛慢,但因它不需计算函数的导数,故有时宁可用弦截法而不用牛顿法,弦截法也要求初始值必须选取得充分靠近方程的根,否则也可能不收敛。二、二、背景分析背景分析代数方程的求根问题是一个古老的数学问题。理论上,n 次代数方程在复数域内一定有 n 个根(考虑重数)。早在 16 世纪就找到了三次、

3、四次方程的求根公式,但直到 19世纪才证明大于等于 5 次的一般代数方程式不能用代数公式求解,而对于超越方程就复杂的多,如果有解,其解可能是一个或几个,也可能是无穷多个。一般也不存在根的解析表达式。因此需要研究数值方法求得满足一定精度要求的根的近似解。牛顿迭代法是牛顿在 17 世纪提出的一种求解方程 多数方程不存在求根公式,从而求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要而在各种科学和工程计算中往往要用到非线性方程组的求解,而牛顿法又是最基础的迭代法,在各种计算力学、控制工程等领域中发挥了不可代替的作用而在数值计算中,非线性方程组的求解同样具有重要意义随着计算机技术的成熟和

4、高速发展,对于非线性方程求根问题出现了大量的数学软件(如 MATLAB,SAS,SPSSD 等) ,计算机已经成为工程师应用数学解决工程问题的主要运算工具同时,工程专业的学生对数学教育的需求重点正在从手工演绎和运算能力的培养转变到结合计算机软件进行建模、求解和论证能力的培养 我们采用 Matlab 数学软件平台,通过实例比较了二分法、牛顿迭代法、弦截法三种基本方法的优缺点。三、三、基本算法思想与实现基本算法思想与实现 (1)二分法)二分法 单变量函数方程:f(x)=0 其中,f(x)在闭区间a,b上连续、单调,且 f(a)*f(b)0,则由牛顿法产生的迭代序列 nx收敛于 f(x)=0 的根*

5、x,且)(2)( )(*2* 1lim xfxf xxxxkk k 定理定理 2:对于方程 f(x)=0,设 f(x)在a,b上有二阶连续导数且满足下述条件: (1)f(a)f(b)0,当0x【*x-,*x+】时,由牛顿迭代法1kx= )( )(kk kxfxfx (k=0,1,2,)式产生的序列 nx是以不低于二阶的收敛速度收敛到*x.(3)弦截法)弦截法设kx,1kx为方程 f(x)=0 的两个近似根。用差商得:f(kx)-f(1kx)/ kx-1kx,代替牛顿迭代公式中的导数 f(kx),于是得到如下的迭代公式:1kx=kx-)()()()(1 1 kk kkkxxxfxfxf。下面研究

6、割弦法的几何意义:经过点(kx,f(kx))及点(1kx,f(1kx))两点作割线,其点斜式方程为:Y=f(kx)-)()()(11 k kkkkxxxxxfxf,其零点为 X=kx- )()()()(1 1 kk kkkxxxfxfxf把 X 用1kx表示即得到迭代格式,它又称为双点弦割法,需要两个初值此割线与 X 轴交点的横坐标就是新的近似值1kx,所以弦截法又称为割线法,如图所示。下面三个定理为弦割法收敛定理:定理定理 1:设 f(x)在其零点*x的邻域 U(*x,)= *x-,*x+ ( 0)内有二阶连续导数,0)(* xf,则当0xU(*x,)时,由割弦法式产生的序列 nx收敛于*x

7、,且收敛的阶为 1.618。定理定理 2:设)(xf 在区间a,b 上连续,且满足下述三点(1)f(a)f(b)0)内有二阶连续导数,f(x)0 则当0x U(*x,)时,由弦割1kx=kx-)()()()(1 1 kk kkkxxxfxfxf式产生的序列 nx收敛于*x,且收敛的阶为 1.618。四、四、具体应用实例分析具体应用实例分析求解033)(23xxxxf在5 . 1附近的根。(1 1)二分法)二分法建立 erfen -M 文件:function k,x,wuca,yx=erfen(a,b,abtol) a(1)=a; b(1)=b; ya=fun(a(1); yb=fun(b(1)

8、; %程序中调用的fun.m为函数 if ya* yb0, disp(注意:ya*yb0,请重新调整区间端点a和b.), retur n end max1=-1+ceil(log(b-a)- log(abtol)/ log(2); % ceil 是向方向取整for k=1: max1+1a;ya=fun(a); b;yb=fun(b); x=(a+b)/2; yx=fun(x); wuca=abs(b-a)/2;k=k-1;k,a,b,x,wuca,ya,yb,yxIf yx=0a=x; b=x;elseif yb*yx0b=x;yb=yx;elsea=x; ya=yx;endif b-a x

9、=-10:0.1:10; y=fun(x);plot(x,y);由图,我们选取区间-6,6输入程序:k,x,wuca,yx=erfen(-6,6,0.001)运行结果:k =13;x =1.7322;wuca =7.3242e-004;yx =0.0012(2)牛顿迭代法)牛顿迭代法建立 newtonqx -M 文件:functionk,xk,yk,piancha,xdpiancha=newtonqx(x0,tol,ftol,gxmax)x(1)=x0; for i=1: gxmaxx(i+1)=x(i)-fnq(x(i)/(dfnq(x(i)+eps); piancha=abs(x(i+1)

10、-x(i);xdpiancha= piancha/( abs(x(i+1)+eps);i=i+1;xk=x(i);yk=fnq(x(i); (i-1) xkykpianchaxdpianchaif (abs(yk)gxmaxdisp(请注意:迭代次数超过给定的最大值 gxmax。)k=i-1; xk=x(i);(i-1) xkykpianchaxdpianchareturn;end(i-1),xk,yk,piancha,xdpiancha;建立 FNQ 原函数文件:function y=fnq(x)y=x.3+x.2-3*x-3;建立 DFNQ 导函数文件:function y=dfnq(x)

11、y=3*x.2+2*x-3;输入程序:k,xk,yk,piancha,xdpiancha=newtonqx(1.5,0.001,0.001,20)输出结果:k =3;xk =1.7321;yk =1.0617e-005;piancha =0.0013;xdpiancha =7.5560e-004(3)弦截法)弦截法建立 gexian 文件:functionk,piancha,xdpiancha,xk,yk=gexian(x01,x02,tol,ftol,gxmax)x(1)=x01;x(2)=x02;fori=2: gxmaxu(i)=fnq(x(i)*(x(i)-x(i-1); v(i)=

12、fnq(x(i)-fnq(x(i-1);x(i+1)=x(i)- u(i)/( v(i); piancha=abs(x(i+1)-x(i);xdpiancha= piancha/( abs(x(i+1)+eps); i=i+1; xk= x(i);yk=fnq(x(i); (i-2) pianchaxdpianchaxkykif (abs(yk)gxmaxdisp(请注意:迭代次数超过给定的最大值 gxmax.)k=i-2; xk=x(i);yk=fnq(x(i);return;end建立 FNQ 函数文件:function y=fnq(x)y=x.3+x.2-3*x-3;输入程序:(取 1.

13、5 附近的初始值 1.4,1.6 两个)k,piancha,xdpiancha,xk,yk=gexian (1.4,1.6,0.001,0.001,20)输出结果:k =4;piancha =5.1561e-004;xdpiancha =2.9769e-004;xk =1.7321yk =3.6710e-005五、设计总结五、设计总结 根据二分法求解非线性方程根的原理,将所求方程根所在的区间平分为两个小区间,在判断根属于哪个小区间;把有根的小区间再平分为二,再判断根所在的更小的区间,对分;重复这一过程,最后求出所要的近似值。当所分的小区间的间距越小的时候,得出的方程根结果就越精确,其原因就是所

14、分的小区间间距越小,则就越接近方程等于 0的根。所以最后的结果的精度越高,得到的误差越小;而对于简单迭代法,只有在满足一定条件的情况下,才能求解出 在区间上有唯一根 ,使迭代序列 收敛于 。根据牛顿迭代法的原理,求解出非线性方程根的结果可以看出,牛顿迭代法具有平方收敛的速度,所以在迭代过程中只要迭代几次就会得到比较精确的解,并不像简单迭代法,需要迭代多次才能解出较为精确的结果,但是用牛顿迭代法求解时选定的初值要接近方程的解,否则可能得不到收敛的结果。同时,牛顿迭代法计算量也会相对较大些。单点弦截法,用选定的两个初值点所对应的函数值连接作弦,用此弦与 轴的交点横坐标作为方程根的近似值。按此方法进

15、行迭代计算,直到满足精度要求为止六、参考文献六、参考文献 1奚梅成。数值分析方法【M】 。合肥:中国科技技术大学出版社,2007.2薛毅。数值分析与实验【M】 。北京:北京理工大学出版社,2005.3汪卉琴,刘目楼。数值分析【M】 。北京:冶金工业出版社,2004.4丁丽娟,程杞元。数值计算方法【M】 。北京:北京理工大学出版社,2005.5薛定宇,陈阳泉。高等应用数学问题的 MATLAB 求解。北京:清华大学出版社,2008.七、心得体会七、心得体会 (1)韩建:这次数值分析课程设计我们受益匪浅。在刚开始拿到题目时,我们提出很多问题,4 个人各有自己的想法,产生了分歧。但经过这一周的时间和体验下来,我们学到的不仅是课本知识,还有团队和合作精神。现在想来,也许学校安排的课程设计有着它更深层的意义,它不仅仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起是所能发挥出的巨大潜能!在这次课程设计中,我们运用到了以前所学的专业课知识,牛顿迭代法、matlab 汇编语言等。虽然过去都将这些知识用于解题中,未有独立应用过它们,但在学习的过程中带着问题去学我发现效率很高。设计过程,好比我们的成长历程,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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