非线性方程组的牛顿迭代法的应用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

CENTRALSOUTHUNIVERSITY数值分析实验报告非线性方程组的牛顿迭代法的应用一、问题背景非线性是实际问题中经常出现的,并且在科学与工程计算中的地位越来越重要,很多我们熟悉的线性模型都是在一定条件下由非线性问题简化的,为得到更符合实际的解答,往往需要直接研究非线性科学,它是21世纪科学技术发展的重要支柱,非线性问题的数学模型有无限维的如微分方程,也有有限维的。道遥咏计算机进行科学计算都要转化为非线性的单个方程或方程组的求解。从线性到非线性是一个质的变化,方程的性质有本质不同,求解方法也有很大差别。本文主要介绍的是非线性方程组的牛顿迭代法的数值解法。二、数学模型对于方程0xf,如果xf湿陷性函数,则它的求根是容易的。牛顿法实质上是一种线性化方法,其基本思想是将线性方程0xf逐步归结为某种线性方程来求解。设已知方程0xf有近似根kx(假定0'kxf),将函数xf在点kx展开,有kkkxxxfxfxf',于是方程0xf可近似地表示为0'kkkxxxfxf这是个线性方程,记其根为1kx,则1kx的计算公式kkkkxfxfxx'1,,1,0k这就是牛顿法。三、算法及流程对于非线性方程nnnnxLxxfMxLxxfxLxxff,,,,,,,,,21212211在kx处按照多元函数的泰勒展开,并取线性项得到0,,,,,,,,,1212111'21212211knknkkkkkknkknknkkknkkxxMxxxxxfxLxxfMxLxxfxLxxf其中nnnnnxfLxfMMxfKxfxf0111'这样便得到迭代公式:knkkknknkkkknkkkkknkkknkkxLxxfMxLxxfxLxxfxfxMxxxMxx,,,,,,,,,212122111'2111211这边是牛顿迭代法的算法过程,牛顿迭代法是工程上应用最多的一种非线性方程组的计算方程法。MATLAB编写的牛顿迭代法的基本程序如下:%牛顿迭代法计算非线性方程%输入x0为迭代初值%tol为误差容限,如果缺省,则默认为10的-10次方%data用来存放计算的中间数据便于计算收敛情况分析function[x,n,data]=new_ton(x0,tol)ifnargin==1tol=1e-10;endx1=x0-f1(x0)/df1(x0);n=1;%迭代过程while(norm(x1-x0)tol)x0=x1;x1=x0-f1(x0)/df1(x0);n=n+1;%data用来存放中间数据data(:,n)=x1;endx=x1;以文件名new_ton.m保存文件。四、计算结果与分析计算非线性方程组04405.02222yxyxx取初值为11yx。(1)先编写方程函数与方程的Jacobi矩阵函数。%牛顿迭代法的方程函数functionf=f1(x0)x=x0(1);y=x0(2);f1=x^2-2*x-y+0.5;f2=x^2+4*y^2-4;%最后方程函数以行向量输出f=[f1f2];以文件名f1.m保存。(2)打开editor编辑器输入以下语句并以文件名df1.m保存。functionf=df1(x0)x=x0(1);y=x0(2);f=[2*x-2-12*x8*y];(3)编写主函数,并以文件名new_main.m保存文件。%牛顿迭代法的主函数x0=[11];[x,n,data]=new_ton(x0);disp('计算结果为')xdisp('迭代次数为')n%抽取data中的第一个变量数据画出曲线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.2222145550694980.993808418603981迭代次数为n=16为了获得更为直观的迭代收敛信息,MATLAB方便的画出了函数图形,如下所示,其中第一幅图形为x的迭代情况,第二幅为y的迭代情况。从图中可以看出,迭代的前几次有一些震荡情况,但是随着迭代次数的增加,收敛效果还是很明显的。

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功