论文 非线性方程求根的数值方法

上传人:飞*** 文档编号:37020415 上传时间:2018-04-05 格式:DOC 页数:14 大小:686KB
返回 下载 相关 举报
论文 非线性方程求根的数值方法_第1页
第1页 / 共14页
论文 非线性方程求根的数值方法_第2页
第2页 / 共14页
论文 非线性方程求根的数值方法_第3页
第3页 / 共14页
论文 非线性方程求根的数值方法_第4页
第4页 / 共14页
论文 非线性方程求根的数值方法_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《论文 非线性方程求根的数值方法》由会员分享,可在线阅读,更多相关《论文 非线性方程求根的数值方法(14页珍藏版)》请在金锄头文库上搜索。

1、1非线性方程求根的数值方法非线性方程求根的数值方法摘摘 要要: 本文讨论非线性方程的数值解,阐述了二分法、三分法、冒泡法、简单迭代法和牛顿迭代法原理。并对非线性方程的数值例子进行了近似计算,并比较了它们的收敛速度。关键词关键词: 非线性方程;二分法;迭代法;收敛性Numerical Method of the Root for Solving Nonlinear EquationAbstract: In this paper, we study numerical solution of the nonlinear equation, the procedures of dichotomy,

2、rule of thirds, bubble method, the simple iterate method and the Newton iterate method are expounded, And has carried on the approximate calculation to the nonlinear equation, and compare their convergence rate.Keywords: nonlinear equation;dichotomy;iteration method;convergence0 0 引引 言言代数方程求根问题是个古老的

3、数学问题,在 19 世纪,理论上就证明了 n5 次一般代数方程不能用代数公式求解,超越方程和工程及科学技术中的许多问题都难以求得精确解,这些方程都归类为非线性方程。因此,需要研究用数值方法求得满足一定代数精度的非线性方程的近似解。当给定非线性方程范围内的某个根,而根的粗略位置已从问题的物理背景或应用其它方法获知,要求取非线性方程精度范围内的根。本文着重讨论非线性方程的数值解法,给出二分法、三分法、冒泡法、简单迭代法和牛顿迭代法的基本原理,并对非线性方程的数值例子进行了近似计算。1 1 二分法二分法每次把的零点所在小区间收缩一半,使区间的两个端点逐步迫近函数的零点,( )f x2以求得零点的近似

4、值,这种方法叫做二分法3。设在上连续,假定,取中点,检查( )f x, a b( )0,( )0f af b02abx的符号,若,则就是方程的一个根;若,记为,0()f x0()0f x0x0()0f xa1a为,则得有根区间;若,记为,为,则得有根区间0x1b11,a b0()0f x0x1ab1b,它的长度为区间的一半。对区间,令,再用同样的方法,11,a b, a b11,a b11 12abx可得新的有根区间,如此反复进行下去,其中每一个区间长度都是前一区间长度22,a b的一半,有*limlim2nn nnnabxx 这就是方程的根,而即为方程的近似根,且有估计误差*x 2nn na

5、bx* 1|2nbaxx其方法的 matlab 程序(见附录 1)。二分法具有计算简单,易于程序实现的优点。2 2 三分法三分法三分法是二分法的推广,只是比二分法复杂一些,但求解速度比二分法快。设在上连续,假定,并且对有,( )f x, a b( )0,( )0f af b , xa b ,取, ,检查,的符号,若( )0fx13abxa22() 3abxa1()f x2()f x,就是方程的一个根,或者,就是方程的一个根。若1()0f x1x2()0f x2x,记为,为,则得到方程的有根区间;若12() ()0f xf x1x1a2x1b11,a b,记为,为,则得到方程的有根区间;若,1(

6、 ) ()0f a f xa1a1x1b11,a b2() ( )0f xf b 记为,为,则得到方程的有根区间;新区间的长度为区间2x1ab1b11,a b11,a b的。如此反复进行下去,其中每一个区间是前一个区间长度的,且有, a b1 31 3*limlim2 3nn nnnnabxx 3而为方程一个实根的近似值,且它满足关系式: ,这表明方程近nx*x* 1|2 3nbaxx似根的绝对误差小于最初区间长度的分之一,三分法 Matlab 程序实现过程见nx12 3n附录 2.3 3 冒泡法冒泡法三分法和二分法其求出方程的近似解的个数比较多后才能得到比较精确的解,冒泡法也是二分法的进一步

7、的推广,求解非线性方程的一种相对简单、容易编程,而( )0f x 且收敛速度比二分法和三分法要快的一种数值算法。冒泡法实现的具体过程如下。定理定理 1 1 设函数在闭区间上存在二阶连续导数且满足条件:( )f x, a b(1)在区间上保号, fx, a b(2), 0,fxxa b (3), 0f a f b 则冒泡法产生的的唯一解. 0f x x证明证明 由条件(1) , (2)知,函数 f(x)在区间上为单调连续函数,因此, a b在区间a,b上至多有一个根,再有条件(3)在内至少存在一 0f x 0f x , a b个根,因此,在区间内存在唯一解. 0f x , a bx冒泡法的基本思

8、想: 设函数在区间上符合定理 1 的条件,存在唯一的解 f x, a bx,把区间分成 10 等分,x 分别取,, , a b0xa110baxa,然后计算的值,用比22() 10baxa10xb110|()|,.,|()|f xf x较法找出绝对值最小的,并确定,若,则为方程的根,若|()|kf xkx 0kf xkx,记,则得有根区间,方程根的区间长度为原来 0kf x11kxa11kxb11,a b4的,即,再用同样的方法,可得到新的根区间,如此进行下去,其中每一1 55ba 22,a b个区间是前一个区间的,有1 5,()limlim10nn nnnnba kxax (k 为常数属于

9、1 至 9 这 10 个数字中的某一个数),作为方程()10nn nba kxa的一个实根的近似值,且它满足关系式 (k 为常数属于 1 0f x x1|5nbaxx至 9 这 10 个数字中的某一个数)上式表明方程近似值的绝对误差小于最初区间长度的 x分之一。Matlab 程序的 maobao.m 函数见附录 3。5n4 4 简单迭代法简单迭代法迭代法也称辗转法辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法) ,即一次性解决问题。迭代法又分为精确迭代精确迭代和近似迭代近似迭代。“二分法”和“牛顿迭代法”属于近似迭代法。简单迭代法的基本思想: 设方程有

10、根,把方程化为等价方程 0f x ( )xx因而有.选定 s 的初始近似值 x0,用递推公式( )sx(k=0,1,2,) (4.1)1()kkxx产生序列,在一定条件下,序列收敛于. 在收敛的情况下,当足够kxkxskxk大时就可取作为方程的近似根。迭代公式(1)被称为求解方程 f(x)=0 的简单迭代法,kx其中称为迭代函数。因,故 s 是迭代函数的不动点。简单迭代法( )x( )ss( )x(4.1)又称为不动点迭代法.由迭代过程所产生的数列并不是都收敛于某一个数,与其迭代方程的撷取有关.定理定理 2 2 设函数,在内可导,且满足两个条件:( ),xC a b, a b5(1)当时,,x

11、a b( ),xa b(2)当时,其中 L 为一常数。则有如下两个结论:,xa b|( )|1xL1.当方程在区间上有唯一的根 s;( )xx, a b2.对任取的,简单的迭代法(4.1)产生的序列,且收敛于 s;0,xa b,kxa b证明证明 (1)令,则,并由条件(1)可知 ( )F xxx ,F xC a b ( )0,( )0F aaaF bbb若上面两个不等式中有一个等号成立,则方程(4.1)有根或 ;若两个都是严sasb格不等式,则根据连续函数的介值定理,必存在,使,即方,sa b ( )0F sss程(4.1)有根,今设有两个不同的使,,则由,sa b12, , s sa b1

12、1( )ss22()ss微分中值定理以及条件(2) ,有 1212121212Ls ssss ss ss s 其中在与之间,因而,上式出现的矛盾证实.1s2s, a b12ss(2) 因,由条件(1)可知,又由条件(2)得0,xa b,kxa b110()( )().kkkkkksssLssxxxxxL其中在与 s 之间,因而,因,故有. k1kx,ka b01Llimkksx收敛性定义:设序列收敛于 s,并且,如果存在kx0 (0,1,2,.)kkesxk常数和常数,使得极限1r 0c 1|lim|kk kce e成立,或者使得当(某个正整数)时,kK1| |k rc ke e成立,则称序列

13、收敛于具有阶收敛速度,简称是阶收敛的。常数称为渐kxsrkxr6近收敛常数,也称为收敛因子。显然,大小反映了序列收敛的快慢程度, 越大rkxr收敛越快, =1 时,又序列是线性收敛的,此时必有 0esp;c=a+(b-a)/2;if feval(fun,a)*feval(fun,c)esp;n=n+1;if feval(fun,a)*feval(fun,b)esp;if feval(fun,a)*feval(fun,b)0.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);附录附录 5 5牛顿法迭代牛顿法迭代 matlab 程序程序:syms x fx gx;fx=x-log(x)-2;gx=diff(fx,x);x=1.2;k=1;fx1=subs(fx,x,x);disp(k x f(x)while abs(subs(fx,x,x)0.001;x=x-subs(fx,x,x)/subs(gx,x,x);disp(num2str(k), ,num2str(x), ,num2str(subs(fx,x,x);k=k+1;if k20;break;endend

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

当前位置:首页 > 行业资料 > 教育/培训

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