非线性方程组研究毕业论文.doc_第1页
非线性方程组研究毕业论文.doc_第2页
非线性方程组研究毕业论文.doc_第3页
非线性方程组研究毕业论文.doc_第4页
非线性方程组研究毕业论文.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

非线性方程组研究毕业论文第一章 绪论1.1了解非线性方程组的一般形式如下:可以看出是在空间的实值函数。再用向量转换下可以得到:,x=,0=此时可以把方程换成:。 (1.1)把F可以看做在区域内展开的非线性映像,表示为1.2下面来介绍简单的边值问题: , 。 (1.2)此时定义f在D=上二阶可微连续,现在求解(1.2)上x的数值。我们用差分方法离散化得到: , j=0,1,2,3,、n+1 ,在得到: j+1,2,、n,在转化矩阵又可以得到:在从映像转换成:,方程(1.2)转化为:Ax+=0本文将介绍求解非线性方程组的牛顿法,迭代法,牛顿法,这是本人对非线性方程数值求解的认识,我会使用这些方法并为为开展进一步研究。第二章、求解非线性方程组的牛顿法2.1牛顿法的引入与介绍在学习中关于方程的求解这种题型接触的太多了,作为线性方程函数,解法多样也很容易求解值。我们来比较一下牛顿法,牛顿法简单的来说其实也是一种线性化方法,他的理念就是把非线性方程转化成某种类型的线性方程求解x的值。非线性方程不过是线性方程的扩展,非线性方程组就是在此基础上加以延伸。下面我们来介绍了解一下牛顿法的理论:我们看下例题: (2.1)从上面非线性方程组我们可以看出,. 是的多元函数,这是我们也可以用向量把它转化为 我们同时把他转化为: (2.2)可以看出时,至少有一个变量是在的非线性函数,我们这时(2.1)就可以看作非线性方程组,非线性方程组的求解实际上就是n=1求根的应用。也就是把单一变量的函数转化为向量函数,这个时候就可以用求解单变量的方法来求解非线性方程组(2.2)。若果知道方程组=0的一个近似根,再用函数的分量在用多元函数泰勒的方法展开,提取线性方程就可以得到:,令,得到: (2.3)其中: (2.4)这时可以把(2.4)作为雅克比矩阵,(2.3)的线性方程组的解我们记作为,就可以得到: (k=0,1,2,.)。 (2.5)这就是我们所说的求解非线性方程组(2.5)的牛顿法。从上面的实例我们可以看得出牛顿法求解非线性方程的主要理论是用在(k=0,1,2,.)的基础上进行迭代计算。我们这时所要做的就是计算出F(x)的雅克比矩阵,通过得到它的逆,直到达到所需要的精度的范围内才停止迭代。2.2牛顿法的算法牛顿法算法如下:第一步:首先我们把所要求解的非线性方程组定义为,并为之确定精度。第二步:把转化为雅克比矩阵,得到。求解方法如下:第三步:重复第二步方法,求解雅克比矩阵的逆。另外把乘以单位矩阵,我们可以用单位矩阵转换求解的逆用来保存。第四步:与的相乘第五步:再用 (k=0,1,2,.)来迭代。第六步:最后我们注意的时精度,其精度时,我们需要重复25次,一直使精度达到最小(精度)时停止迭代,最后的迭代结果为。2.3牛顿法代码程序编程最后介绍代码的编程:#include #include #include #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 *)malloc(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+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 *)malloc(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)=(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+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;jmatrixNum;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(); return matrixF2; delete matrixF1; delete matrixF2;最后总结:我们可以从上面的实例可以得到,牛顿法是求解非线性方程组最简单的一种线性方法,它的构想是通过非线性方程组以线性方程组转化,从而来形成一种迭代形式然后迭代达到迭代次数来逼近,最终来求解。牛顿法的迭代方式通常都是最少2次迭代以上,并且收敛速度快。因此可以说是最常用的求解非线性方程组的方法。第三章、求解非线性方程组的拟牛顿法3.1拟牛顿法的引入与介绍上面我们详细介绍了牛顿法求解非线性方程组数值,我们仔细留一下,我们会发现牛顿法虽然有很好的收敛性,你有没有发现牛顿法对它的初值要求的什么严格,每步迭代都要计算,是个偏导数值建立的矩阵,我们不可能遇到的都是简单的数据,假如我们遇到每个数值都很复杂,这个时候我们将无法进行计算。例如n数值很大时,我们不仅要浪费时间,同时每步迭代都要求解线性方程组,计算工作量太大。同时还有其它问题,假如迭代过程中有一步处有奇异,那么这个时候牛顿法将无法计算。为了克服以上缺点我们下面来介绍拟牛顿法。 听到拟牛顿法就知道是对牛顿法的改进,例如我们用矩阵来近似的转换代替,这时我们就可以看到这样形式的迭代法: k=0,1,2,3,.。我们把定义为非奇异的。为了简单化,追求计算简单,我们就不多次计算逆矩阵,直接定义无限接近的逆矩阵,那么迭代就可以转化为:,。3.2拟牛顿法的算法现在我们来说下拟牛顿法的算法过程:步1:首先我们要确定的初值,数值的精确度:,并定义初始矩阵为:;步2:其次求解的数值,假如,那么就令,停止;步3:把进行迭代计算;步4:在求解;步5:,代入上面的步2,来循环计算。3.3拟牛顿法的题例分析我们首先看下面的非线性方程组: 定义:,精度。对于上面的非线性方程组我用了拟牛顿法算法的源程序进行迭代计算得到了以下数据,我用了图表表(1)表示:表1的迭代数值k|00.1000000000.100000000-0.10000000010.4998653790.032411718-0.52145641320.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.000000000-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.5235987760.000000000我们通过看上面的迭代结果可以得出:,|的数值变化不是很大,精度取到取0.00000001,这是我们看到理论值于迭代值几乎相同。拟牛顿法可以很简单将不管是奇异还是接近于奇异的非线性方程组求解。这就说明了拟牛顿法的计算量小,不复杂,同时收敛性好。第四章、求解非线性方程组的割线法4.1割线法的引入与介绍上面已经介绍了求解非线性方程组的两种方法:牛顿法和拟牛顿法。现在我们来介绍另一种方法割线法,它是通过计算函数值的一种迭代方法,这种方法简单而且计算有效方便。下面我们讨论一个非线性方程组: (4.1)我们知道建立非线性方程组迭代法,有一个特别简单的方法就是转化成线性方程 (4 .2)我是通过无限接近(4 .1)求解的。可以看得出一个非奇异矩阵,我们已知F(x)在某点上的值,就可以利用插值得的方法来进一步确定方程(4 .2)中的和,从而得到这一类不用到算导数就可以求数值的方法,这就是我准备所要介绍的割线法: 我们假设在中n+1个上面有互不相同的点(j=0.,1,.n)上所对应的函数值F(),这是我们可以得到:, i=0 ,.n。 (4. 3)那么我们就可以用插值的方法确定和的数值。此时再将(4.1)的K次近似解,记作为,同时取n个辅助点,. ,这时我们可以从(4.3)求解得和,i=1,.n,为个达到分割,我们令两式相减得到:,i=1,.n, (4.4) (4.5)可以从(4.4)求解得到:,再由求解(4.5)求的,将结果联合(4.2)得到 (4.6)通过(4.4)我们可以知道,这时给出的n+1个点,只要满足一定的条件就可以求出,4.2割线法的总结陈述下面看看我的总结陈述如下:我们定义为在中如果任何的一个n+1组成的n个向量, i=1,2,.,n ,他们是线性相关,这时候我们可以把这组点在一般位置上。步1:非奇异矩阵()可以满足条件;.步2:n个向量,(i)可以组成的一组基步3:在 y区间,都不存在不全为0的常数,或或。现在来阐述一下割线法的几何意义:我们知道双点割线法是将过点和的割线与轴交点的横坐标作为方程的根的近似值,可以重复此过程进行运算,将和这两点的割线与轴交点的横坐标理解为方程解的近似值。简单的说单点割线法是用过点和的割线与轴交点的横坐标作为方程的根的近似值。割线法提例:4.3割线法收敛分析首先介绍割线法的收敛速度我们以方程为例,假设它的根为,那么假设在附近有二阶连续导数,那么初值就会无限接近,此时双点割线法的迭代过程收敛,收敛速度的计算方法为: 这说明,由此我们从上面得出结论,单点割线法时线性收敛的而双点割线法是超线性收敛的。 我们把辅助点定位,i=1,.,n, 其此时作为第i个分量为1的坐标向量,是的已知向量,得到=我们如果把它记作为:,其中此时这种割线法可以转化为: 我们通过割线法转化得到的也可以说是离牛顿法。 结束语现在的科学研究中,面对很多实际问题都无法用线性表达式有规律的计算出结果,而很多问题实际上都是非线性问题,非线性问题相比较线性问题要麻烦的多,我们常常需要构造一个非线性方程通过对数值的研究计算与探考,求出结果。然而随着科学的发展,现在非线性的问题已经应用到在科学计算以及工程领域等多个方面,因此,研究非线性方程对科学计算和工程应用等领域有很高的价值和意义,这也是这篇论文探考求解非线性方程数值的方法。本文主要研究了非线性方程迭代法的相关运算以及Newton法,主要介绍了求解非线性方程目前比较常用的几种迭代方法,牛顿法、割线法、。通过对几种方法的计算精度和收敛性等作出比较,而得出结论,在这一章还介绍了一种求解非线性方程的新的迭

温馨提示

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

评论

0/150

提交评论