数值计算课程设计报告_第1页
数值计算课程设计报告_第2页
数值计算课程设计报告_第3页
数值计算课程设计报告_第4页
数值计算课程设计报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

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

5、在区间端点的 符号来确定x*所在区域,将有根区间缩小到充分小,从而可以求出满足给定精度的根X* 的近似值。 下面研究二分法的几何意义: 设ai=i, bi=b,区间,中点xi= bL及f人,若f人=o,则/ =人,若 2 f(a1 )*f(x1 )0 ,令比=內,t2=x1,则根x*比,b2中,这样就得到长度缩小一半 的有根区间去卫,若f( b1)*f( x1)0,令去二乂1 , t2 = b1,则根x*比亠2中, 这样就得到长度缩小一半的有根区间%, b2,即f( a2)f( 3)0,此时鸟-笑=直 也 2 对有根区间去,b2重复上述步骤,即分半求中点,判断中电处符号,则可得长度有缩 小一半

6、的有根区间%,2, 如图所示: 新心十 重复上述过程,第n步就得到根x*的近似序列xn及包含X*的区间套,如下: (1) ai,bia2, b2an,bn- * (2) f(an)f(bn) 0, Xan,bn (3) an- bn(an 1 bn i) =. = b a v 72* i Xn且 |X*-Xn|瞎 (n=1,2,3) 2 2 显然limXn,且Xn以等比数列的收敛速度收敛于X*,因此用二分法求f(X)=0的实根X* 可以达到任意指定精度。 I-(u+A )/2 (2)牛顿迭代法 设方程f(x)=O在其根x*的某个领域U(x* ,)内有一阶连续导数,且 f (X*)工0。 求f(

7、x)=0的根x*,首先要将f(x)=0转化为等价形式 x (x),并使 (x)满足不动 点迭代的一般理论。 于是我们令(x)=x+h(x)f(x), 可由 (为)=0来确定h(x)的结构,根据 (x)=1+h ( x*)f( x*)+h( x*)f (x1)=1+h( x* )f ( x*)=0 可得 h( x*)=-1/f ( x*),由于 f (x)丰 0,且 f (x)连续,因此当 h(x)=-1/f (x)时, h (x1)=0,即令 (x)=x-f(x)/f (x),从而有迭代格式 f (xk) xk 1 = xk( k=0,1,2,.) f (Xk) 由于Xi , X2 , X3.

8、都在U领域里,从而当 B比较小时,可用f ( X。)可近似代替f (xk ), Xk 1 = Xk - f (Xk),此方法称为牛顿迭代法 f(x。) 下面研究牛顿法的几何意义: 设r是方程f (X )=0的根,选取X。作为的r初始近似值,经过(X0,f( x。)做曲线y=f(x) 的切线的方程:y=f( x0)+f ( x0)(x- x0),求出L与x的交点的横坐标 x1 = x0-f( x0)/f (X0),称Xi为r的一次近似值经过点(Xi,f( Xi)做切线y=f(x)的切线,并求出该切线 与X轴的交点横坐标:X2 = X-! -f( xj/f ( x1), x2称为r的二次近似值,重

9、复以上操作 可以得到r的近似值序列。下述三个定理分别讨论了牛顿法的收敛性质: 定理1 :对于方程f(x)=0,设f (x )在a , b上有二阶连续导数且满足下述条件: (1) f(a)f(b)o, 则由牛顿法产生的迭代序列xn收敛于f(x)=0的根x*,且 * limXk 1X k* 2 (Xkx ) * f (X) * 2f (x) 定理2:对于方程f(x)=0,设f(x)在a, b上有二阶连续导数且满足下述条件: (1)f(a)f(b)0; 0, f (x)0 (3) F(?)La, iff (b) 0,当X。【x*-, X*+】时,由牛顿迭代法 Xk 1 =f(Xk) (k=0,1,2

10、, (3)弦截法 设Xk, Xk 1为方程f(x)=O 的两个近似根。用差商得: f( Xk)-f( Xk 1 )/ Xk- Xk 1 代替牛顿迭代公式中的导数 f (Xk),于是得到如下的迭代公式: Xk 1 =Xk f (Xk) f (Xk) f (Xk 1) (Xk Xk 1) 。下面研究割弦法的几何意义: 经过点(Xk,f( Xk)及点(Xk 1 ,f( Xk 1)两点作割线,其点斜式方程为: f(Xk) Y=f( Xk)- Xk 込J(x Xk 1 Xk) ,其零点为X=Xk - flXJ_(X f (Xk) f (Xk 1) k Xk 1) 把 X用Xk 1表示即得到迭代格式,它又

11、称为双点弦割法,需要两个初值 此割线与X 轴交点的横坐标就是新的近似值Xk 1,所以弦截法又称为割线法,如图所 定理1:设f ( x )在其零点X的邻域u( X ,)= X_, X + (0)内有 * * 阶连续导数,f (X) 0,则当X。 u ( X,)时,由割弦法式产生的序列Xn收 敛于X,且收敛的阶为。 定理 2:设f(X)在区间a,b上连续,且满足下述三点 (1) f(a)f(b)0)内有二阶连续导数, *一 f(X;)、(Xk Xk1) f (X) 0则当 Xo U( x ,)时,由弦割 XkGX f(Xk) HXkJ 式产生的序列 Xn收敛于x,且收敛的阶为。 四、具体应用实例分

12、析 求解f(x) x3 x2 3x 30在1.5附近的根。 (1)二分法 建立erfen -M文件: fun ctio n k,x,wuca,yx=erfe n( a,b,abtol) a(1)=a; b(1)=b; ya=fu n( a(1); yb=fu n(b(1); % 程序中调用的为函数 if ya* yb0, disp(注意:ya*yb0,请重新调整区间端点 a和b.), retur n end 方向取整 max 仁-1+ceil(log(b-a)- log(abtol)/ log(2); % ceil是向 for k=1: max1+1 a;ya=fu n( a); b;yb=f

13、u n( b); x=(a+b)/2; yx=fu n( x); wuca=abs(b-a)/2; k=k-1; k,a,b,x,wuca,ya,yb,yx If yx=0 a=x; b=x; else if yb*yx0 b=x; yb=yx; else a=x; ya=yx; end if b-a x=-10:10; y=fun( x); plot(x,y); 由图,我们选取区间-6 , 6 输入程序: k,x,wuca,yx=erfe n(-6,6. 运行结果: k =13 ; x =; wuca =; yx = (2)牛顿迭代法 建立newtonqx -M文件: function k,

14、xk,yk,pia ncha,xdpia ncha=n ewt onq x(xO,tol,ftol,gxmax) x(1)=x0; for i=1: gxmax x(i+1)=x(i)-fnq(x(i)/(dfnq(x(i)+eps); pia ncha=abs(x(i+1)_x(i); xdpia ncha= pia ncha/( abs(x(i+1)+eps); i=i+1; xk=x(i); yk=fnq(x(i); (i-1) xkykpia nchaxdpia ncha if (abs(yk)ftol) xk=x(i); (i-1) xkykpia nchaxdpia ncha re

15、turn; end (i-1),xk,yk,pia ncha,xdpia ncha; 建立FNQ原函数文件: fun ctio n y=fnq(x) y=x.A3+x.A2-3*x-3; 建立dfnqi函数文件: function y=dfnq(x) y=3*x.A2+2*x-3; 输入程序:k,xk,yk,pia ncha,xdpia ncha=n ewt onq x,20) 输出结果: k =3 ; xk =; yk =; pia ncha =; xdpia ncha = (3) 弦截法 建立gexian文件: function k,pia ncha,xdpia ncha,xk,yk=ge

16、xia n( x01,x02,tol,ftol,gxmax) x(1)=x01; x(2)=x02; fori=2: gxmax u(i)=fnq(x(i)*(x(i)-x(i-1); v(i)= fnq(x(i)-fnq(x(i-1); x(i+1)=x(i)- u(i)/( v(i); pia ncha=abs(x(i+1)-x(i); xdpia ncha= pia ncha/( abs(x(i+1)+eps); i=i+1; xk= x(i); yk=fnq(x(i); (i-2) pia nchaxdpia nchaxkyk if (abs(yk)ftol) xk=x(i); yk=

17、fnq(x(i); return; end 建立FNQ函数文件: fun ctio n y=fnq(x) y=x.A3+x.A2-3*x-3; 输入程序: (取附近的初始值,两个) k,pia ncha,xdpia ncha,xk,yk=gexia n ,20) 输出结果: k =4 ; pia ncha =; xdpia ncha =; xk = yk = 五、设计总结 根据二分法求解非线性方程根的原理,将所求方程根所在的区间平分为两个小区间, 在判断根属于哪个小区间;把有根的小区间再平分为二,再判断根所在的更小的区间, 对 分;重复这一过程,最后求出所要的近似值。当所分的小区间的间距越小的

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

19、弦,用此弦与轴的交点横坐标作为方程根的近似值。按此方法 进行迭代计算,直到满足精度要求为止 六、参考文献 1 奚梅成。数值分析方法【 Mo合肥:中国科技技术大学出版社,2007. 2 薛毅。数值分析与实验【 Mo北京:北京理工大学出版社,2005. 3 汪卉琴,刘目楼。数值分析【 Mo北京:冶金工业出版社,2004. 4 丁丽娟,程杞元。数值计算方法【M】北京:北京理工大学出版社,2005. 5 薛定宇,陈阳泉。高等应用数学问题的 MATLAB求解。北京:清华大学出版社,2008. 七、心得体会 (1 )韩建:这次数值分析课程设计我们受益匪浅。在刚开始拿到题目时,我们提出 很多问题,4个人各有

20、自己的想法,产生了分歧。但经过这一周的时间和体验下来,我们 学到的不仅是课本知识,还有团队和合作精神。 现在想来,也许学校安排的课程设计有着 它更深层的意义,它不仅仅让我们综合那些理论知识来运用到设计和创新,还让我们知道 了一个团队凝聚在一起是所能发挥出的巨大潜能! 在这次课程设计中,我们运用到了以前所学的专业课知识,牛顿迭代法、matlab汇 编语言等。虽然过去都将这些知识用于解题中,未有独立应用过它们,但在学习的过程中 带着问题去学我发现效率很高。设计过程,好比我们的成长历程,常有一些不如意,难免 会遇到各种各样的问题。这也激发了我今后努力学习的兴趣,通过这次设计,我懂得了学 习的重要性,

21、了解到理论知识与实践结合的重要意义,学会了坚持、耐心和努力,这将为 自己今后的学习和工作打下基础。 (2)高育坤:此次实验过程中学到了许多东西,对于MATLAB的运用也比以前熟练了 一些,在编程过程中也考虑了一些题目以外的因素,虽然还有不足之处, 不过我相信只要 不断努力一定会有所进步,通过几次实验我也明白了一个道理,对于编程不要一看到就害 怕,一步步的去做,一点点的去实现算法,编程最难的是算法,题目给出了算法我们需要 的就是将数学公式转化为编程语言 (3 )李婧:通过此次课程设计我们可以知道计算机在现代生活中的应用已经如此普 及,尤其是在数学计算当中,Matlab软件更是发挥了不可替代的作用

22、.Matlab以其强大 的功能,方便了当今数值计算,数学教程,及工程计算等众多领域我们在以Matlab软 件为平台的基础上, 给出了非线性方程的一般解法,非线性方程的求解有二分法,牛顿迭 代法等二分法的优点是算法简单,且总是收敛的,但由于二分法的收敛速度太慢,故一 般不单独将其用于求根,只用其为根求得一个较好的近似本文主要介绍了牛顿迭代法 及其在现实生活中的应用.牛顿迭代法为平方收敛,故其收敛速度较快, 但对初值的选取 需要谨慎,如果初值选取错误,则可能导致方程迭代发散,最终不能求解出正确解在计 算一些对精度要求特别苛刻时,最好给出较高的精度输入及输出,防止因为精度问题导致 误差过大,最终影响

23、结果. (4)王冬妮:二分法的优点是计算简单,方法可靠,误差容易估计,只要求连续, 且总是收敛的,因此对函数的性质要求较低。它的缺点是不能求偶数重根,也不能求复根, 且收敛较慢。故一般不单独将其用于求根,只用其为根求得一个较好的近似值。 牛顿迭代法是多项式求根的一种效率很高的算法,收敛速度快(对单根)。算法简单 是迭代法中较好者,但是它有两个缺点:第一每次只能求出一个-根,求其它根时若采 用降次处理又会产生精度降低的问题。第二有时会遇到由于初始点选择不当而使算法失 效。 牛顿法和割弦法都是先将f(x)线性化,然后求根,但线性化的方式不同:从分析的 角度说,牛顿法是在根 *x邻近点处的切线函数作

24、为f(x)的近似,而割弦法是在*x邻近 用f(x)的一次插值函数作为 f(x)的近似函数,它们本质的区别在于,牛顿迭代法在计算 时,只用到前一步的值,弦截法需要用两个猜测值 ,因此使用这种方法必须先给出 两个初始值,。 根据以上三种方法的优缺点,我们在使用非线性方程求根时,应根据实际方程选出一 种或者多种方法进行综合求解,以便快速,便捷的求出最佳精确值。 八、附录 (1)二分法的程序 function c,err,yc = bisect(f1,a,b,delta) % fl是所要求解的函数。 % a和b分别为有根区间的左右限。 % delta是允许的误差界。 % c为所求近似解。 % yc为函

25、数f在c上的值。 % err是c的误差估计。 ya = feval(f1,a); yb = feval(f,b); if yb = 0, c = b ; return end if ya*yb0, disp(a,b) 不是有根区间); return end max1 = 1 + round(log(b-a) - log(delta)/log(2); for k = 1:max1 c = (a + b)/2; yc = feval(f,c); if yc = 0 a=c; return elseif yb*yc0 b = c; yb = yc; else a = c; ya = yc; end if (b-a) delta,retur n,end end k; c = (a + b)/2; err = abs(b-a); yc = feval(f,c); * (2)牛顿法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论