非线性方程组的数值算法研究论文

上传人:仙*** 文档编号:60672215 上传时间:2022-03-09 格式:DOC 页数:21 大小:526KB
收藏 版权申诉 举报 下载
非线性方程组的数值算法研究论文_第1页
第1页 / 共21页
非线性方程组的数值算法研究论文_第2页
第2页 / 共21页
非线性方程组的数值算法研究论文_第3页
第3页 / 共21页
资源描述:

《非线性方程组的数值算法研究论文》由会员分享,可在线阅读,更多相关《非线性方程组的数值算法研究论文(21页珍藏版)》请在装配图网上搜索。

1、南 昌 工 程 学 院毕 业 论 文 理学 系(院) 信息与计算科学 专业毕业论文题目 非线性方程组的数值算法研究 班 级 09信息与计算科学 目录摘要3Abstract4第一章 绪论5第二章、求解非线性方程组的几种方法62.1、牛顿法62.1.1牛顿法的引入与介绍62.1.2牛顿法的算法82.1.3牛顿法代码程序编程82.2、拟牛顿法112.2.1拟牛顿法的引入与介绍112.2.2拟牛顿法的算法122.2.3拟牛顿法的题例分析122.3、割线法142.3.1割线法的引入与介绍142.3.2割线法的总结陈述153.3.3割线法题例分析16结束语18参考文献19致谢词20非线性方程组的数值算法研

2、究Study on numerical algorithms for nonlinear equations总计 毕 业 论 文 21 页表 格 2 个 摘要论文讲解的是非线性方程的数值的求解方法,课本中我们接触到求解线性方程的方法比较多,相对于求解非线性方程组数值方法比较繁琐和计算量大,同时课本上只是简单介绍非线性方程组数值的求解方法。我在图书馆查阅了资料和在老师的指导下,仔细研究把思路整理如下:我在这边论文就如何求解非线性数值的求解方法阐述了牛顿法、拟牛顿法、割线法三种方法来求解非线性方程组数值,并且通过了列举了题例可以比较更鲜明的可以看出3种方法的联系和特点。关键词:Newton法、迭代

3、法、拟Newton法。. AbstractThe paper explained that the method of solving nonlinear equations numerically, text we come into contact with the method of solving linear equation more, compared with the numerical method for solving nonlinear equations is complicated and large amount of calculation, at the sa

4、me time the textbook only briefly method for solving nonlinear equations. I looked up information and under the guidance of the teacher in the library, a careful study of the ideas as follows: I how to solve nonlinear numerical solution method described the Newton method, for solving nonlinear equat

5、ions of the numerical quasi-Newton method, secant method three methods in this paper, and through the examples cited can be more clear we can see that the relationship and characteristics of 3 kinds of methods.Keywords: Newton method, iterative method, quasi Newton method. 第一章 绪论 我们先了解非线性方程组的一般形式如下:

6、我们可以看出是在空间的实值函数。我们再用向量转换下可以得到:,x=,0=我们此时可以把方程换成:。 (1)我们可以把F可以看做在区域内展开的非线性映像,表示为下面我们来介绍简单的边值问题: , 。 (2)我们此时定义f在D=上二阶可微连续,现在我们求解(2)上x的数值。我们用差分方法离散化得到: , j=0,1,2,3,、n+1 ,在得到: j+1,2,、n,我们在转化矩阵又可以得到:A=在从映像转换成:,方程(2)转化为:Ax+=0本论文将介绍求解非线性方程组的牛顿法,迭代法,牛顿法,这是本人对非线性方程数值求解的认识,我会使用这些方法并为为开展进一步研究。第二章、求解非线性方程组的几种方法

7、2.1、牛顿法2.1.1牛顿法的引入与介绍我们在学习中关于方程f(x)=0的求解这种题型接触的太多了,f(x)作为线性方程函数,解法多样也很容易求解值。我们来比较一下牛顿法,牛顿法简单的来说其实也是一种线性化方法,他的理念就是把非线性方程f(x)转化成某种类型的线性方程求解x的值。非线性方程不过是线性方程的扩展,非线性方程组就是在此基础上加以延伸。下面我们来介绍了解一下牛顿法的理论:我们看下例题: (1)从上面非线性方程组我们可以看出,. 是的多元函数,这是我们也可以用向量把它转化为 我们同时把他转化为: (2)我们可以看出时,至少有一个变量是在的非线性函数,我们这时(1)就可以看作非线性方程

8、组,非线性方程组的求解实际上就是n=1求根的应用。也就是把单一变量的函数转化为向量函数,这个时候就可以用求解单变量的方法来求解非线性方程组(2)。若果知道方程组=0的一个近似根,再用函数的分量在用多元函数泰勒的方法展开,提取线性方程就可以得到:,我们令,得到: (3)其中 (4)我们这时可以把(4)作为雅克比矩阵,(3)的线性方程组的解我们记作为,就可以得到: (k=0,1,2,.)。 (5)这就是我们所说的求解非线性方程组(2)的牛顿法。下面我们来简单介绍非线性方程组求解牛顿法的算法:从上面的实例我们可以看得出牛顿法求解非线性方程的主要理论是用在(k=0,1,2,.)的基础上进行迭代计算。我

9、们这时所要做的就是计算出F(x)的雅克比矩阵,通过得到它的逆,直到达到所需要的精度的范围内才停止迭代。2.1.2牛顿法的算法牛顿法算法如下:1首先我们把所要求解的非线性方程组定义为,并为之确定精度。2把转化为雅克比矩阵,得到。求解方法如下:3重复第二步方法,求解雅克比矩阵的逆。另外把乘以单位矩阵,我们可以用单位矩阵转换求解的逆用来保存。4与的相乘5再用 (k=0,1,2,.)来迭代。6.最后我们注意的时精度,其精度时,我们需要重复25次,一直使精度达到最小(精度)时停止迭代,最后的迭代结果为。2.1.3牛顿法代码程序编程最后我们介绍代码的编程:#include #include #includ

10、e #include #define f0(x1,x2) (x1+2*x2-3)#define f1(x1,x2) (2*x1*x1+x2*x2-5)#define x_ 0.000001#define matrixNum 2double *matrixF2(double *x);int y=0;void main() int i,j,n; double p,*x; double *b;double *matrixF; /矩阵F double *matrixF_; /矩阵F的雅可比矩阵的逆 b=(double *)malloc(matrixNum);matrixF=(double *)mall

11、oc(matrixNum); matrixF_=(double *)malloc(matrixNum*matrixNum); cout请输入初值:;for(i=0;i*(x+i); do p=0.0;for(i=0;imatrixNum;i+) *(b+i)=0;*matrixF=f0(*x,*(x+1); *(matrixF+1)=f1(*x,*(x+1); matrixF_=matrixF2(x);for(i=0;imatrixNum;i+)for(j=0;jmatrixNum;j+)*(b+i)+=*(matrixF_+i*matrixNum+j)*(*(matrixF+j); *(x+

12、i)=*(x+i)-*(b+i);cout*(x+i) ; coutendl; for(i=0;ix_);cout停止迭代,最终迭代结果为*x,*(x+1)endl; delete matrixF; delete matrixF_; getch();double *matrixF2(double *x) int i,j; double t; double *matrixF1; /矩阵F的雅可比矩阵 double *matrixF2; /矩阵F的雅可比矩阵的逆 matrixF1=(double *)malloc(matrixNum*matrixNum); matrixF2=(double *)m

13、alloc(matrixNum*matrixNum); for(i=0;imatrixNum;i+) for(j=0;jmatrixNum;j+)if(i=j) *(matrixF2+i*matrixNum+j)=1;else *(matrixF2+i*matrixNum+j)=0; *matrixF1=(f0(*x+x_),*(x+1)-f0(*x,*(x+1)/x_; *(matrixF1+1)=(f0(*x,(*(x+1)+x_)-f0(*x,*(x+1)/x_; *(matrixF1+2)=(f1(*x+x_),*(x+1)-f1(*x,*(x+1)/x_; *(matrixF1+3)

14、=(f1(*x,(*(x+1)+x_)-f1(*x,*(x+1)/x_; /for(i=0;imatrixNum;i+) / cout*(x+i)endl; cout矩阵F在*x,*(x+1)的雅可比矩阵endl;for(i=0;imatrixNum;i+) for(j=0;jmatrixNum;j+) cout*(matrixF1+i*matrixNum+j) ; coutendl;/求矩阵F的雅可比矩阵的逆 t=*matrixF1; for(i=0,j=0;jmatrixNum;j+) *(matrixF1+i*matrixNum+j)/=t; *(matrixF2+i*matrixNum

15、+j)/=t; t=*(matrixF1+1*matrixNum);for(i=1,j=0;jmatrixNum;j+)*(matrixF1+i*matrixNum+j)-=*(matrixF1+j)*t; *(matrixF2+i*matrixNum+j)-=*(matrixF2+j)*t;t=*(matrixF1+1*matrixNum+1); for(i=1,j=0;jmatrixNum;j+) *(matrixF1+i*matrixNum+j)/=t; *(matrixF2+i*matrixNum+j)/=t; t=*(matrixF1+1);for(i=i,j=0;jmatrixNu

16、m;j+) *(matrixF1+j)-=*(matrixF1+i*matrixNum+j)*t; *(matrixF2+j)-=*(matrixF2+i*matrixNum+j)*t; for(i=0;imatrixNum;i+) for(j=0;jmatrixNum;j+) cout*(matrixF1+i*matrixNum+j) ; coutendl; for(i=0;imatrixNum;i+) for(j=0;jmatrixNum;j+) cout*(matrixF2+i*matrixNum+j) ; coutendl;cout第y次迭代结果为*x,*(x+1)endl;getch

17、(); return matrixF2; delete matrixF1; delete matrixF2;最后总结:我们可以从上面的实例可以得到,牛顿法是求解非线性方程组最简单的一种线性方法,它的构想是通过非线性方程组以线性方程组转化,从而来形成一种迭代形式然后迭代达到迭代次数来逼近,最终来求解。牛顿法的迭代方式通常都是最少2次迭代以上,并且收敛速度快。因此可以说是最常用的求解非线性方程组的方法2.2、拟牛顿法2.2.1拟牛顿法的引入与介绍上面我们详细介绍了牛顿法求解非线性方程组数值,我们仔细留一下,我们会发现牛顿法虽然有很好的收敛性,你有没有发现牛顿法对它的初值要求的什么严格,每步迭代都要

18、计算,是个偏导数值建立的矩阵,我们不可能遇到的都是简单的数据,假如我们遇到每个数值都很复杂,这个时候我们将无法进行计算。例如n数值很大时,我们不仅要浪费时间,同时每步迭代都要求解线性方程组,计算工作量太大。同时还有其它问题,假如迭代过程中有一步处有奇异,那么这个时候牛顿法将无法计算。为了克服以上缺点我们下面来介绍拟牛顿法。 我们听到拟牛顿法就知道是对牛顿法的改进,例如我们用矩阵来近似的转换代替,这时我们就可以看到这样形式的迭代法: k=0,1,2,3,.。我们把定义为非奇异的。我们为了简单化,追求计算简单,我们就不多次计算逆矩阵,直接定义无限接近的逆矩阵,那么迭代就可以转化为:,。2.2.2拟

19、牛顿法的算法现在我们来说下拟牛顿法的算法过程:1. 首先我们要确定的初值,数值的精确度:,并定义初始矩阵为:;2. 其次求解的数值,假如,那么就令,停止;3. 把进行迭代计算;4. 在求解;5. ,代入上面的(2),来循环计算。下面我为大家介绍一个实例来说明我的观点:2.2.3拟牛顿法的题例分析我们首先看下面的非线性方程组: 定义:,精度。对于上面的非线性方程组我用了拟牛顿法算法的源程序进行迭代计算得到了以下数据,我用了图表表(1)表示:表1的迭代数值k|00.1000000000.100000000-0.10000000010.4998653790.032411718-0.521456413

20、20.4999586950.013527867-0.5228957610.02843015630.5000160800.001795560-0.5235508470.01270673240.5000010300.000117825-0.5235956070.00177790350.5000000100.000001046-0.5235987480.00011763460.5000000000.000000001-0.5235987760.00000104570.500000000-0.000000000 -0.5235987760.00000000180.5000000000.00000000

21、0-0.5235987760.00000000090.500000000-0.000000000-0.5235987760.000000000100.500000000-0.000000000-0.5235987760.000000000110.500000000-0.000000000-0.5235987760.000000000120.500000000-0.000000000-0.5235987760.000000000130.500000000-0.000000000-0.5235987760.000000000140.500000000-0.000000000-0.523598776

22、0.000000000我们通过看上面的迭代结果可以得出:,|的数值变化不是很大,精度取到取0.00000001,这是我们看到理论值于迭代值几乎相同。拟牛顿法可以很简单将不管是奇异还是接近于奇异的非线性方程组求解。这就说明了拟牛顿法的计算量小,不复杂,同时收敛性好。2.3、割线法2.3.1割线法的引入与介绍上面我们已经介绍了求解非线性方程组的两种方法:牛顿法和拟牛顿法。现在我们来介绍另一种方法割线法,它是通过计算函数值的一种迭代方法,这种方法简单而且计算有效方便。下面我们讨论一个非线性方程组: (3 .1)我们知道建立非线性方程组迭代法,有一个特别简单的方法就是转化成线性方程 (3 .2)我是通

23、过无限接近(3 .1)求解的。可以看得出一个非奇异矩阵,我们已知F(x)在某点上的值,就可以利用插值得的方法来进一步确定方程(3 .2)中的和,从而得到这一类不用到算导数就可以求数值的方法,这就是我准备所要介绍的割线法: 我们假设在中n+1个上面有互不相同的点(j=0.,1,.n)上所对应的函数值F(),这是我们可以得到:, i=0 ,.n。 (3. 3)那么我们就可以用插值的方法确定和的数值。此时再将(3.1)的K次近似解,记作为,同时取n个辅助点,. ,这时我们可以从(3.3)求解得和,i=1,.n,为个达到分割,我们令两式相减得到:,i=1,.n, (3.4) (3.5)可以从(3.4)

24、求解得到:,我们再由求解(3.5)求的,将结果联合(3.2)得到 (3.6)通过(3.4)我们可以知道,这时给出的n+1个点,只要满足一定的条件就可以求出,2.3.2割线法的总结陈述下面看看我的总结陈述如下:我们定义为在中如果任何的一个n+1组成的n个向量, i=1,2,.,n ,他们是线性相关,这时候我们可以把这组点在一般位置上。1,非奇异矩阵()可以满足条件;.2,n个向量,(i)可以组成的一组基3,在 y区间,都不存在不全为0的常数,或或。现在来阐述一下割线法的几何意义:我们知道双点割线法是将过点和的割线与轴交点的横坐标作为方程的根的近似值,可以重复此过程进行运算,将和这两点的割线与轴交

25、点的横坐标理解为方程解的近似值。简单的说单点割线法是用过点和的割线与轴交点的横坐标作为方程的根的近似值。割线法提例:3.3.3割线法题例分析用双点割线法求方程在区间上的根,在MATLAB命令窗口执行。进行迭代6次后得到计算结果,下图表2表2 121.4441.6139341.68711.6723561.67301.6730(3)下面我们来介绍割线法的收敛速度我们以方程为例,假设它的根为,那么假设在附近有二阶连续导数,那么初值就会无限接近,此时双点割线法的迭代过程收敛,收敛速度的计算方法为: 这说明,由此我们从上面得出结论,单点割线法时线性收敛的而双点割线法是超线性收敛的。 我们把辅助点定位,i

26、=1,.,n, 其此时作为第i个分量为1的坐标向量,是的已知向量,得到=我们如果把它记作为:,其中此时这种割线法可以转化为: 我们通过割线法转化得到的也可以说是离牛顿法。 结束语现在的科学研究中,面对很多实际问题都无法用线性表达式有规律的计算出结果,而很多问题实际上都是非线性问题,非线性问题相比较线性问题要麻烦的多,我们常常需要构造一个非线性方程通过对数值的研究计算与探考,求出结果。然而随着科学的发展,现在非线性的问题已经应用到在科学计算以及工程领域等多个方面,因此,研究非线性方程对科学计算和工程应用等领域有很高的价值和意义,这也是这篇论文探考求解非线性方程数值的方法。本文主要研究了非线性方程

27、迭代法的相关运算以及Newton法,主要介绍了求解非线性方程目前比较常用的几种迭代方法,牛顿法、割线法、。通过对几种方法的计算精度和收敛性等作出比较,而得出结论,在这一章还介绍了一种求解非线性方程的新的迭代法,相比其他传统的迭代法,新的迭代法有其迭代收敛速度更快、精度更高等特点最后我再次对自己随写的论文坐下总结,对于非线性方程组的求解数值的方法,论文介绍了牛顿法,拟牛顿法,割线法这三种最常见的方法,并把其算法步棸进行了阐述,形象简单,容易让人接受。 参考文献1 徐萃薇、孙绳武、计算方法引论 。北京:高教出版社 2001.2 曾金平、数值计算方法。长沙:湖南大学出版社 2004. 3曲建明、求解

28、非线性方程的抛物线迭代。4 林成森、数值计算方法。北京:科学出版社,1988.学出版社,2005、5李庆样、王能超、易大义。北京:清华大学出版社,2001.86关冶,陆金蒲,数值分析基础。高等教育出版社 1988.57邓建中,葛仁杰,程正兴,计算方法,西安交通大学8王则柯,计算的负责性,湖南教育出版社致谢词本人2个月的时间终于将这篇论文写完,在论文的写作过程中遇到了无数的困难,都在同学和老师的帮助下度过了。尤其要特别感谢我的论文指导老师禹海雄老师,她对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。另外,在校图书馆查找资料的时候,里面有我需要的各种资料和体例。在此向帮助和指导过我的各位老师表示最衷心的感谢!感谢这篇论文所涉及到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。感谢我的同学和朋友,在我写论文的过程中给予我了很多参考素材,还在论文的撰写和排版等过程中提供热情的帮助。由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正同时衷心地感谢在百忙之中评阅论文和参加答辩的各位专家、教授!20

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!