《2022年非线性方程组的牛顿迭代法的应用 .pdf》由会员分享,可在线阅读,更多相关《2022年非线性方程组的牛顿迭代法的应用 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、CENTRAL SOUTH UNIVERSITY数值分析实验报告名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 非线性方程组的牛顿迭代法的应用一、问题背景非线性是实际问题中经常出现的, 并且在科学与工程计算中的地位越来越重要,很多我们熟悉的线性模型都是在一定条件下由非线性问题简化的,为得到更符合实际的解答,往往需要直接研究非线性科学,它是21 世纪科学技术发展的重要支柱, 非线性问题的数学模型有无限维的如微分方程,也有有限维的。
2、 道遥咏计算机进行科学计算都要转化为非线性的单个方程或方程组的求解。从线性到非线性是一个质的变化, 方程的性质有本质不同, 求解方法也有很大差别。 本文主要介绍的是非线性方程组的牛顿迭代法的数值解法。二、数学模型对于方程0 xf,如果xf湿陷性函数,则它的求根是容易的。牛顿法实质上是一种线性化方法,其基本思想是将线性方程0 xf逐步归结为某种线性方程来求解。设已知方程0 xf有近似根kx(假定0kxf) , 将函数xf在点kx 展开,有kkkxxxfxfxf,于是方程0 xf可近似地表示为0kkkxxxfxf这是个线性方程,记其根为1kx,则1kx的计算公式kkkkxfxfxx1,, 1 ,0
3、k这就是牛顿法。三、算法及流程对于非线性方程nnnnxLxxfMxLxxfxLxxff,21212211在kx处按照多元函数的泰勒展开,并取线性项得到名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 0,121211121212211knknkkkkkknkknknkkknkkxxMxxxxxfxLxxfMxLxxfxLxxf其中nnnnnxfLxfMMxfKxfxf0111这样便得到迭代公式:knkkknknkkkknkkkkk
4、nkkknkkxLxxfMxLxxfxLxxfxfxMxxxMxx,2121221112111211这边是牛顿迭代法的算法过程, 牛顿迭代法是工程上应用最多的一种非线性方程组的计算方程法。MATLAB 编写的牛顿迭代法的基本程序如下:% 牛顿迭代法计算非线性方程% 输入 x0 为迭代初值% tol为误差容限,如果缺省,则默认为10 的-10 次方% data用来存放计算的中间数据便于计算收敛情况分析functionx,n,data=new_ton(x0,tol) if nargin=1 tol=1e-10; endx1=x0-f1(x0)/df1(x0); n=1; %迭代过程while (n
5、orm(x1-x0)tol) x0=x1; x1=x0-f1(x0)/df1(x0); n=n+1; % data用来存放中间数据data(:,n)=x1; endx=x1; 以文件名 new_ton.m保存文件。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - 四、计算结果与分析计算非线性方程组04405.02222yxyxx取初值为11yx。(1) 先编写方程函数与方程的Jacobi矩阵函数。% 牛顿迭代法的方程函数funct
6、ion f=f1(x0) x=x0(1); y=x0(2); f1=x2-2*x-y+0.5; f2=x2+4*y2-4; % 最后方程函数以行向量输出f=f1 f2;以文件名 f1.m保存。(2) 打开 editor 编辑器输入以下语句并以文件名df1.m 保存。function f=df1(x0) x=x0(1); y=x0(2); f=2*x-2 -1 2*x 8*y;(3) 编写主函数,并以文件名new_main.m保存文件。%牛顿迭代法的主函数x0=1 1; x,n,data=new_ton(x0); disp( 计算结果为 ) x disp( 迭代次数为 ) n% 抽取 data
7、中的第一个变量数据画出曲线subplot(2,1,1) plot(data(1,:),title(x 在迭代中的变化 ) % 抽取 data 中的第二个变量数据画出其变化曲线subplot(2,1,2) plot(data(2,:),title(y 在迭代中的变化 )(4) 运行程序,在 MATLAB 命令窗口输入 new_main,以 enter键结束,输出为:计算结果为x = -0.222214555069498 0.993808418603981 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - 迭代次数为n = 16 为了获得更为直观的迭代收敛信息,MATLAB 方便的画出了函数图形,如下所示,其中第一幅图形为x 的迭代情况, 第二幅为 y 的迭代情况。从图中可以看出,迭代的前几次有一些震荡情况,但是随着迭代次数的增加, 收敛效果还是很明显的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -