非线性方程组研究毕业论文.docx

上传人:lao****ou 文档编号:136363 上传时间:2023-04-09 格式:DOCX 页数:20 大小:37.24KB
下载 相关 举报
非线性方程组研究毕业论文.docx_第1页
第1页 / 共20页
非线性方程组研究毕业论文.docx_第2页
第2页 / 共20页
非线性方程组研究毕业论文.docx_第3页
第3页 / 共20页
非线性方程组研究毕业论文.docx_第4页
第4页 / 共20页
非线性方程组研究毕业论文.docx_第5页
第5页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《非线性方程组研究毕业论文.docx》由会员分享,可在线阅读,更多相关《非线性方程组研究毕业论文.docx(20页珍藏版)》请在第一文库网上搜索。

1、非线性方程组研究毕业论文第一章绪论1.1 了解非线性方程组的一般形式如下:工(玉,工2,工3,,玉)二,;(xpx2,x3,.,xJ = O,可以看出工(,=1,2,3,.,)是在空间R的实值函数。再用向量转换下可以得至IJ:工(%)* x)= 力(x)x=X”此时可以把方程换成:F(x) = 0。把F可以看做在R区域内展开的非线性映像,表示为F := D u 父 t R1.2下面来介绍简单的边值问题:x =/(r,s) 0rl , x(0) = a, x(l) = (3 o此时定义在口=&月|04/1,-8Vxy上二阶可微连续,现在求解(1.2)上x的数值。我们用差分方法离散化得到:(1.2

2、), 1h =, t - = jh , j=0,2,3,、n+l ,n + J在得到:x1-j+1,2,、n,在转化矩阵乂可以得到:2-10-1 02 .1-1 2在从映像转换成:(px) = h2 x.xn,方程(1.2)转化为:Ax+8(x) =0本文将介绍求解非线性方程组的牛顿法,迭代法,牛顿法,这是本人对非线性方程数值求解的认识,我会使用这些方法并为为开展进一步研究。第二章、求解非线性方程组的牛顿法2.1牛顿法的引入与介绍在学习中关于方程”外=0的求解这种题型接触的太多了,“X)作为线性方程函数,解法多样也很容易求解值。我们来比较一下牛顿法,牛顿法简单的来说其实也是一种线性化方法,他的

3、理念就是把非线性方程转化成某种类型的线性方程求解x的值。非线性方程不过是线性方程的扩展,非线性方程组就是在此基础上加以延伸。下面我们来介绍了解一下牛顿法的理论:我们看下例题:工(玉,/,&,玉)二, (2.1)、/:(%,九2,凡,) = 0,从上面非线性方程组我们可以看出工,力是(不%)的多元函数,这是我们也可以用向量把它转化为x = (w,.X)7尸= (,,.我们同时把他转化为:F(x) = O(2.2)可以看出22时, (,= 1,.,)至少有一个变量是在玉(,=1,.,)的非线性函数,我们这时(2.1)就可以看作非线性方程组,非线性方程组的求解实际上就是n=l求根的应用。也就是把单一

4、变量的函数“X)转化为向量函数尸(司,这个时候就可以用求解单变量的方法来求解非线性方程组(2.2)o若果知道方程组尸(x)=0的一个近似根/塌,再用函数爪力的分量力(x)(i = l,.在x的用多元函数泰勒的方法展开,提取线性方程就可以得到:F(x)-尸(工小)+ /0卜一工),得到:其中:令b(x) = 0,(灯x-x(2.3)。工(x)。力(力F(x)=夕,()g (P4。./2(x)。力(X) (px2(px2(2.4)。力(x)。力(x) Sfn (PX (px2(pxn这时可以把(2.4)作为雅克比矩阵,(2.3)的线性方程组的解我们记作为尢”刊,就可以得到:%,二/)一/()/卜)

5、(k=0,l,2, .)o(2.5)这就是我们所说的求解非线性方程组(2.5)的牛顿法。从上面的实例我们可以看得出牛顿法求解非线性方程的主要理论是用/+)=/)一/廿)4/)在(k=0,2, .)的基础上进行迭代计算。我们这时所要做的就是计算出F(x)的雅克比矩阵尸(x),通过尸(x)得到它的逆尸(x尸,直到达到所需要的精度(x_k)的范围内才停止迭代。2.2 牛顿法的算法牛顿法算法如下:第一步:首先我们把所要求解的非线性方程组定义为尸(X),并为之确定精度(x_k)。第二步:把爪儿)转化为雅克比矩阵,得到尸(X)。求解方法如下:9人(不,匕,_/(玉门.,马+工,,%)一/;(工3,当,%)

6、(pXjx_第三步:重复第二步方法,求解尸(X)雅克比矩阵的逆尸(6、另外把尸(X)乘以单位口 . 0、矩阵:.,:,我们可以用单位矩阵转换求解/(x)的逆用来保存。/) (k=0,l,2,.)来迭代。第六步:最后我们注意的时精度,其精度时,我们需要重复25次,一直使精度达到最小(精度时停止迭代,最后的迭代结果为x_4。2.3 牛顿法代码程序编程最后介绍代码的编程:#include #include #include #include #define f0(xl,x2) (xl+2*x2-3)#define fl(xl,x2) (2*xl*xl+x2*x25)#define x_ 0.0000

7、01#define matrixNum 2double *matrixF2(double *x);int y=0;void main()(int i,j,n;double p,*x;double *b;double *matrixF; /矩阵 Fdouble *matrixF_; 矩阵F的雅可比矩阵的逆b=(double *)malloc(matrixNum);matrixF=(double *)malloc(matrixNum);matrixF_=(double *)maHoc(matrixNum*matrixNum);coutcv”请输入初值:;for(i=0;imatrixNum;i+)

8、cin*(x+i);dop=0.0;for(i=();imatrixNum;i+)*(b+i)=O;*matrixF=fO(*x,*(x+1);*(matrixF+ l)=fl(*x,*(x+1);matrixF_=matrixF2(x);for(i=();imatrixNum;i+)(for(j=0;jmatrixNum;j4-+)*(b+i)+=*(matrixF_+i*matrixNum+j)*(*(matrixF+j);*(x+i)=*(x+i)-*(b+i);coutvv*(x+i)v” ”;)coutendl;for(i=0;ix_);cout”停止迭代,最终迭代结果为*xv?*(

9、x+l)vendl;delete matrixF;delete matrixF_;getch();)double *matrixF2(double *x)(int ij;double t;double *matrixFl;/矩阵F的雅可比矩阵double *matrixF2;矩阵F的雅可比矩阵的逆matrixFl=(double *)malloc(matrixNum*matrixNum);matrixF2=(double *)malloc(matrixNum*matrixNum);for(i=0;imatrixNum;i+)for(j=0;j matrixNu m;j+)if(i=j)*(ma

10、trixF2+i*matrixNum+j)= 1;else *(matrixF2+i*matrixNum+j)=0;* matrixF 1=(f0( * x+x_), * (x+ l)-fO(*x,*(x+1 )/x_;*(matrixF 1+l)=(fO(*x,(*(x+ l)+x_)-fO(*x,*(x+ l)/x_;*(matrixFl+2)=(fl(*x+x_),*(x+ l)-fl(*x,*(x+ l)/x_;*(matrixF 1 +3)=(f 1 (*x,(*(x+ l)+x_)-fl(*x,*(x+ l)/x_;/for(i=0;imatrixNum;i+)/ cout*(x4

11、-i)endl;coutvv矩阵 F 在vv*xv,V*(x+l)v的雅可比矩阵vvendl;for(i=0;imatrixNum;i+)for(j=0;jmatrixNum;j+)cout*(matrixFl+i*matrixNum+j) n;coutendl;)/求矩阵F的雅可比矩阵的逆t=*matrixFl;for(i=0j=0;jmatrixNum;j+)(*(matrixFl +i*matrixNum+j)/=t;*(matrixF2+i*matrixNum+j)/=t;)t=*(matrixFl + l*matrixNum);for(i= 1 ,j=O;jmatrixNum;j+)

12、(*(matrixFl+i*matrixNum+j)-=*(matrixF14j)*t;*(matrixF24-i*matrixNum+j)-=*(matrixF2-lJ)*t;)t=*(matrixFl +1 *matrixNum+1);for(i= 1 J=O;jmatrixNum;j+)(*(matrixFl +i*matrixNum+j)/=t;*(matrixF2+i*matrixNum+j)/=t;)t=*(matrixFl+l);for(i=i,j=0;jmatrixNum;j+4-)(*(matrixFl+j)-=*(matrixFl+i*matrixNum+j)*t;*(ma

13、trixF2+j)-=*(matrixF2+i*matrixNum+j)*t;)for(i=0;imatrixNum;i+)(for(j=0;jmatrixNum;j+)cout* (matrixF 1 +i *matrixNum+j)M ;coutendl;)for(i=0;imatrixNum;i+)(for(j=0 ;j matrixNum ;j+)cout*(matrixF2+i*matrixNum+j)v ”;coutendl;)coutvv第” vyv”次迭代结果为v*xv?vv*(x+l)”vvendl;getch();return matrixF2;delete matrixFl;delete matrixF2;最后总结:我们可以从上面的实例可以得到,牛顿法是求解非线性方程组最简单的一种线性方法,它的构想是通过非线性方程组以线性方程组转化,从而来形成一种迭代形式然后迭代达到迭代次数来逼近,最终来求解。牛顿法的迭代方式

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

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



客服