




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数值计算方法课程设计报告课程设计名称: 数值计算方法 课程设计题日: 非线性方程求根年级专业:组员姓名学号:指导教师:完 成时间:非线性方程求根一、问题提出随着科学技术, 生产力经济的发展, 在科学与工程计算中存在着大量方程求根问题, 例如贷款购房问题,工厂的最佳订货问题等都需要求解一类非线性方程的根,首先根据 实际问题列出数学模型,确定变量,给出各个条件及相关函数;然后对建立的模型进行 具体分析和研究,选择合适的求解方法;编写函数的程序,用计算机求出方程的解,通 过所求解分析具体情况求解非线性方程的问题有以下几种基本方法。二分法简单易行,但收敛较慢,仅有 线性收敛速度。而且该方法不能用于求偶
2、数重根或复根,但可以用来确定迭代法的初始 值。牛顿法是方程求根中常用的一种迭代方法,它除了具有简单迭代法的优点外,还具 有二阶收敛速度(在单根邻近处)的特点,但牛顿法对初始值选取比较苛刻(必须充分 靠近方程的根) ,否则牛顿法可能不收敛。 弦截法是牛顿法的一种修改, 虽然比牛顿法收 敛慢,但因它不需计算函数的导数,故有时宁可用弦截法而不用牛顿法,弦截法也要求 初始值必须选取得充分靠近方程的根,否则也可能不收敛。二、背景分析代数方程的求根问题是一个古老的数学问题。理论上, n 次代数方程在复数域内一定有 n 个根(考虑重数 )。早在 16 世纪就找到了三次、四次方程的求根公式,但直到19世纪才证
3、明大于等于 5 次的一般代数方程式不能用代数公式求解,而对于超越方程就复 杂的多,如果有解,其解可能是一个或几个,也可能是无穷多个。一般也不存在根的解 析表达式。因此需要研究数值方法求得满足一定精度要求的根的近似解。牛顿迭代法是 牛顿在 17 世纪提出的一种求解方程 多数方程不存在求根公式,从而求精确根非常困 难,甚至不可能,从而寻找方程的近似根就显得特别重要而在各种科学和工程计算中往往要用到非线性方程组的求解,而牛顿法又是最基础 的迭代法,在各种计算力学、控制工程等领域中发挥了不可代替的作用而在数值计算 中,非线性方程组的求解同样具有重要意义随着计算机技术的成熟和高速发展,对于 非线性方程求
4、根问题出现了大量的数学软件(如MATLAB,SAS,SPSSD等),计算机已经成为工程师应用数学解决工程问题的主要运算工具同时,工程专业的学生对数学教育的 需求重点正在从手工演绎和运算能力的培养转变到结合计算机软件进行建模、求解和论 证能力的培养 我们采用 Matlab 数学软件平台, 通过实例比较了二分法、 牛顿迭代法、弦截法三种基本方法的优缺点。三、基本算法思想与实现(1)二分法单变量函数方程:f( x) =0其中, f(x) 在闭区间 a , b 上连续、单调,且 f(a)*f(b)0, 则有函数的介值定理可知, 方程 f(x)=0在( a,b)区间内有且只有一个解 x* ,二分法是通过
5、函数在区间端点的 符号来确定 x* 所在区域, 将有根区间缩小到充分小, 从而可以求出满足给定精度的根 x* 的近似值。下面研究二分法的几何意义:设a1=1, b1=b,区间a1,b1 ,中点x1=a1b1 及fx1,若 fx1=0,则= x1 ,若2f( a1)*f( x1 )0 ,令a2 = a1, b2 = x1 ,则根 x* a2, b2中,这样就得到长度缩小一半 的有根区间 a2, b2,若 f( b1 )*f( x1)0,令a2=x1,b2=b1,则根 x* a2, b2中, 这样就得到长度缩小一半的有根区间 a2, b2, 即 f( a2)f( b2 )0, 此时 b2 - a2
6、 = b1 a12对有根区间 a2, b2 重复上述步骤,即分半求中点,判断中电处符号,则可得长度有缩 小一半的有根区间 a2 , b2,如图所示:重复上述过程,第n 步就得到根 x *的近似序列 xn 及包含 x* 的区间套,如下:1) a1,b1 a2,b2 an ,bn2) f (an)f (bn) 0,x an,bn3)anbn = 21 (an 1bn 1) = = b 2n(4) xn an2bn,且| x*- xn| b2n 1a (n=1,2,3 .)显然 lim ,且以等比数列的收敛速度收敛于x* ,因此用二分法求 f (x)=0 的实根 x* 可以达到任意指定精度。(2)牛
7、顿迭代法设方程 f(x)=0 在其根 x*的某个领域 U(x*, )内有一阶连续导数,且 f( x*) 0。 求 f(x)=0 的根 x* ,首先要将 f(x)=0 转化为等价形式,并使 (x) 满足不动点迭代的一般 理论。于是我们令 (x)=x+h(x)f(x), 可由 ( x1 )=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)
8、/f(x) ,从而有迭代格式f (xk )xk 1 = xk( k=0,1,2 , . )f (xk )由于 x1, x2, x3.都在 U领域里,从而当 B比较小时,可用 f(x0)可近似代替 f( xk ), xk 1 = xk - f (xk ) ,此方法称为牛顿迭代法f (x0)面研究牛顿法的几何意义:设 r 是方程 f(x)=0 的根,选取 x0作为的 r 初始近似值, 经过 ( x0,f( x0) 做曲线 y=f(x)的切线的方程: y=f( x0)+f ( x0 )(x- x0),求出 L与x 的交点的横坐标 x1=x0-f( x0)/f ( x0), 称x1为r 的一次近似值经
9、过点 ( x1,f( x1) )做切线 y=f(x) 的切线, 并求出该切线与 x 轴的交点横坐标: x2 =x1 -f( x1 )/f ( x1), x2 称为 r 的二次近似值,重复以上操作 可以得到 r 的近似值序列。下述三个定理分别讨论了牛顿法的收敛性质:定理 1:对于方程 f(x)=0 ,设 f ( x)在a , b 上有二阶连续导数且满足下述条件: (1)f(a)f(b)0,则由牛顿法产生的迭代序列xn 收敛于 f(x)=0 的根 x* ,且*limxk 1 xf (x* )k * 2 *(xk x*)2 2f (x*)定理 2:对于方程f(x)=0,设 f ( x)在a , b
10、上有二阶连续导数且满足下述条件(1)f(a)f(b)0;( 2)对任意的 xa,b ,f (x) 0, f (x) 0f(a)f (b)( 3) f (a) b-a,f (b)0,当 x0 【x* -, x*+ 】时,由牛顿迭代法 xk 1 =f (xk)(k=0,1,2 ,. )式产生的序列 xn 是以不低于二阶的收敛速度收敛到 x* .3)弦截法设 xk , xk 1 为方程 f(x)=0的两个近似根。用差商得:f( xk )-f(xk 1)/xk - xk 1 ,代替牛顿迭代公式中的导数f ( xk ) ,于是得到如下的迭代公式:xk 1 xkf (xk)(xkf (xk) f(xk 1
11、) kxk 1)面研究割弦法的几何意义:经过点( xk ,f( xk ) )及点( xk 1,f( xk 1 ) )两点作割线,其点斜式方程为:f(xk )Y=f(xk )-xkf (xk 1) xk 1xk),其零点为 X=xk -f (xk)(xkf (xk) f (xk 1) kxk 1)把X用xk 1表示即得到迭代格式,它又称为双点弦割法,需要两个初值此割线与 X 轴交点的横坐标就是新的近似值 示。下面三个定理为弦割法收敛定理:定理 1:设 f (x)在其零点 x*的邻域 U( x*二阶连续导数, f (x ) 0 ,则当 x0 U( x*xk 1 ,所以弦截法又称为割线法,如图所)=
12、 x*- , x* + (0)内有)时,由割弦法式产生的序列 xn 收敛于 x ,且收敛的阶为。f (x)定理 2:设 f (x) 在区间 a,b 上连续,且满足下述三点 (1)f(a)f(b)0)内有二阶连续导数,*f(xk)(xkxk 1)f (x)0则当 x0U( x*,)时,由弦割 xk 1=xk- f(xk) f(xk 1)式产生的序列 xn 收敛于 x* ,且收敛的阶为。四、具体应用实例分析求解 f(x) x3 x2 3x 3 0 在1.5附近的根。(1) 二分法建立 erfen -M 文件:function k,x,wuca,yx=erfen(a,b,abtol)a(1)=a;b
13、(1)=b;ya=fun(a(1);yb=fun(b(1); % 程序中调用的为函数if ya* yb0,disp( 注意: ya*yb0, 请重新调整区间端点 a和 b.),retur nendmax1=-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=0 a=x; b=x; else if yb*yx0 b=x;yb=yx;
14、else a=x; ya=yx;endif b-a x=-10:10; y=fun(x);plot(x,y);由图,我们选取区间 -6 , 6 输入程序:k,x,wuca,yx=erfen(-6,6, 运行结果: k =13 ;x =; wuca = ; yx =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)-x(
15、i); xdpiancha= piancha/( abs(x(i+1)+eps);i=i+1;xk=x(i);yk=fnq(x(i); (i-1) xkykpianchaxdpianchaif (abs(yk)ftol)&(pianchatol)|(xdpianchagxmaxdisp( 请注意:迭代次数超过给定的最大值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;建立 D
16、FNQ导函数文件:function y=dfnq(x) y=3*x.2+2*x-3;输入程序: k,xk,yk,piancha,xdpiancha=newtonqx,20)输出结果:k =3 ;xk = ;yk = ;piancha = ;xdpiancha =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)= fnq(x(i)-fnq(x(i-1);x
17、(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)ftol)&( pianchatol)|(xdpianchagxmaxdisp( 请注意:迭代次数超过给定的最大值 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;输入程
18、序:(取附近的初始值,两个)k,piancha,xdpiancha,xk,yk=gexian ,20)输出结果:k =4 ;piancha = ; xdpiancha = ; xk = yk =五、设计总结根据二分法求解非线性方程根的原理,将所求方程根所在的区间平分为两个小区间,在判断根属于哪个小区间; 把有根的小区间再平分为二, 再判断根所在的更小的区间, 对 分;重复这一过程,最后求出所要的近似值。当所分的小区间的间距越小的时候,得出的 方程根结果就越精确,其原因就是所分的小区间间距越小,则就越接近方程等于 0 的根。 所以最后的结果的精度越高, 得到的误差越小; 而对于简单迭代法, 只有
19、在满足一定条件 的情况下, 才能求解出 在区间上有唯一根 ,使迭代序列 收敛于 。根据牛顿迭代法的原 理, 求解出非线性方程根的结果可以看出, 牛顿迭代法具有平方收敛的速度, 所以在迭代 过程中只要迭代几次就会得到比较精确的解, 并不像简单迭代法, 需要迭代多次才能解出 较为精确的结果, 但是用牛顿迭代法求解时选定的初值要接近方程的解, 否则可能得不到 收敛的结果。同时,牛顿迭代法计算量也会相对较大些。单点弦截法,用选定的两个初值 点所对应的函数值连接作弦,用此弦与 轴的交点横坐标作为方程根的近似值。按此方法 进行迭代计算,直到满足精度要求为止六、参考文献1 奚梅成。数值分析方法【 M】。合肥
20、:中国科技技术大学出版社, 2007.2 薛毅。数值分析与实验【 M】。北京:北京理工大学出版社, 2005.3 汪卉琴,刘目楼。数值分析【 M】。北京:冶金工业出版社, 2004.4 丁丽娟,程杞元。数值计算方法【 M】。北京:北京理工大学出版社, 2005.5 薛定宇,陈阳泉。高等应用数学问题的 MATLAB求解。北京:清华大学出版社, 2008.七、心得体会(1)韩建:这次数值分析课程设计我们受益匪浅。在刚开始拿到题目时,我们提出 很多问题, 4 个人各有自己的想法,产生了分歧。但经过这一周的时间和体验下来,我们 学到的不仅是课本知识, 还有团队和合作精神。 现在想来, 也许学校安排的课
21、程设计有着 它更深层的意义, 它不仅仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起是所能发挥出的巨大潜能!在这次课程设计中,我们运用到了以前所学的专业课知识,牛顿迭代法、 matlab 汇 编语言等。 虽然过去都将这些知识用于解题中, 未有独立应用过它们, 但在学习的过程中 带着问题去学我发现效率很高。设计过程,好比我们的成长历程,常有一些不如意,难免 会遇到各种各样的问题。 这也激发了我今后努力学习的兴趣, 通过这次设计, 我懂得了学 习的重要性,了解到理论知识与实践结合的重要意义,学会了坚持、耐心和努力,这将为 自己今后的学习和工作打下基础。(2)高育坤: 此
22、次实验过程中学到了许多东西, 对于 MATLAB的运用也比以前熟练了 一些, 在编程过程中也考虑了一些题目以外的因素,虽然还有不足之处, 不过我相信只要不断努力一定会有所进步, 通过几次实验我也明白了一个道理, 对于编程不要一看到就害 怕,一步步的去做,一点点的去实现算法,编程最难的是算法,题目给出了算法我们需要 的就是将数学公式转化为编程语言(3)李婧:通过此次课程设计我们可以知道计算机在现代生活中的应用已经如此普 及,尤其是在数学计算当中, Matlab 软件更是发挥了不可替代的作用 Matlab 以其强大 的功能,方便了当今数值计算,数学教程,及工程计算等众多领域我们在以 Matlab
23、软 件为平台的基础上, 给出了非线性方程的一般解法, 非线性方程的求解有二分法, 牛顿迭 代法等二分法的优点是算法简单,且总是收敛的,但由于二分法的收敛速度太慢,故一 般不单独将其用于求根, 只用其为根求得一个较好的近似 本文主要介绍了牛顿迭代法 及其在现实生活中的应用 牛顿迭代法为平方收敛, 故其收敛速度较快, 但对初值的选取 需要谨慎,如果初值选取错误,则可能导致方程迭代发散,最终不能求解出正确解在计 算一些对精度要求特别苛刻时, 最好给出较高的精度输入及输出, 防止因为精度问题导致 误差过大,最终影响结果(4)王冬妮:二分法的优点是计算简单,方法可靠,误差容易估计,只要求连续, 且总是收
24、敛的, 因此对函数的性质要求较低。 它的缺点是不能求偶数重根, 也不能求复根, 且收敛较慢。故一般不单独将其用于求根,只用其为根求得一个较好的近似值。牛顿迭代法是多项式求根的一种效率很高的算法,收敛速度快(对单根) 。算法简单 是迭代法中较好者, 但是它有两个缺点: 第一每次只能求出一个根, 求其它根时若采 用降次处理又会产生精度降低的问题。第二有时会遇到由于初始点选择不当而使算法失 效。牛顿法和割弦法都是先将 f(x) 线性化,然后求根,但线性化的方式不同:从分析的 角度说,牛顿法是在根 *x 邻近点处的切线函数作为 f(x) 的近似,而割弦法是在 *x 邻近 用 f(x) 的一次插值函数作
25、为 f(x) 的近似函数,它们本质的区别在于,牛顿迭代法在计算 时,只用到前一步的值 ,弦截法需要用两个猜测值 , ,因此使用这种方法必须先给出 两个初始值 , 。根据以上三种方法的优缺点, 我们在使用非线性方程求根时, 应根据实际方程选出一 种或者多种方法进行综合求解,以便快速,便捷的求出最佳精确值。八、附录(1)二分法的程序function c,err,yc = bisect(f1,a,b,delta)% f1 是所要求解的函数。% a 和 b 分别为有根区间的左右限。% delta 是允许的误差界。% c 为所求近似解。% yc 为函数 f 在 c 上的值。% err 是 c 的误差估计。ya = feval(f1,a);yb = feval(f,b);if yb = 0,c = b ;returnendif ya*yb0,disp(a,b) 不是有根区间 );returnendmax1 = 1 + round(log(b-a) - log(delta)/log(2);for k = 1:max1c = (a + b)/2;yc = feval(f,c);if yc = 0a=c;b=c;returnelseif yb*yc0b = c;yb = yc;elsea = c;ya = yc;endif (b-a) delta,return,enden
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化学水处理技术指南
- 2025至2030中国超级计算机行业市场深度研究及发展前景投资可行性分析报告
- 化工企业废弃物处理方案
- 增加销售额的利器大揭秘
- 农学领域水稻种植管理规程
- 化工企业企业社会责任报告
- 企业员工薪酬调整方案
- 品牌管理制度的建模方案
- 2025台州路桥区公开招聘中小学教师40人笔试备考试题及答案解析
- 2025年老年病学全科综合护理实践考核答案及解析
- 渣土车制度上墙管理制度
- 调试工上岗证考试题库及答案
- 2025 骨髓纤维化护理课件
- 电力营销考试题库及答案
- 监察法专题培训课件
- 人证网约车考试题目及答案
- 酒店pa考试试题及答案
- 宗教法律法规课件
- 钣金冷冲压激光切割折弯检验作业指导书
- 综合安防管理平台操作手册
- 2025秋部编版(2024)八年级上册历史 【教学课件】第1课《鸦片战争》
评论
0/150
提交评论