西南交大-数值分析-非线性方程组的五种解法

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

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

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

资源描述

数值分析论文目录摘要....................................................................................................................21绪论...................................................................................................................32五种解法...........................................................................................................32.1二分法....................................................................................................32.1.1二分法简介.................................................................................32.1.2二分法的MATLAB程序...............................................................32.2不动点迭代法(简单迭代法)............................................................42.2.1不动点迭代法简介.....................................................................42.2.2不动点迭代法的MATLAB程序..................................................52.3牛顿法....................................................................................................52.3.1牛顿法简介.................................................................................52.3.2牛顿法的MATLAB程序..............................................................52.4简易牛顿法............................................................................................62.4.1简易牛顿法简介.........................................................................62.4.2简易牛顿法的MATLAB程序......................................................62.5割线法....................................................................................................62.5.1割线法简介.................................................................................62.5.2割线法的MATLAB程序..............................................................73例子计算及比较分析.......................................................................................74结论.................................................................................................................11参考文献..............................................................................................................12数值分析论文摘要本论文介绍了二分法、不动点迭代法、牛顿法、简易牛顿法、割线法五种算法原理,然后进行了MATLAB编程,得到能求解非线性方程的根的程序。本文分别用这五种方法的MATLAB程序对五个例子进行了计算,得到各种方法所需的迭代次数,迭代精度,迭代时间等,从而分析比较五种方法的优缺点。关键词:非线性方程二分法简单迭代法牛顿法简易牛顿法割线法数值分析论文1绪论在科学工作中经常出现这类问题,即求解非线性方程或非线性方程组—求x使得f(x)=0或求X=(𝑥1,𝑥2,⋯,𝑥𝑛)𝑇使得F(x)=0。本论文采用5种方法即二分法、不动点迭代法(简单迭代法)、牛顿法、简易牛顿法、割线法,通过对原理的理解进行了MATLAB编程,然后对几个例子进行各种解法计算,进行比较分析,从而发现各种算法的优势与不足,增加对各种算法的理解。作者所使用的计算机配置如表1-1所示。表1-1计算平台简介处理器Intel(R)Core(TM)i5-4460CPU@3.20GHz3.20GHz安装内存(RAM)8.00GB(7.88GB可用)系统类型Windows864位操作系统Matlab版本MATLAB8.0.0.783(R2012b)2五种解法2.1二分法2.1.1二分法简介若f是区间[a,b]的连续函数,且f(a)f(b)0,则f在[a,b]内必有一个零点。因为f(a)f(b)0,所以函数f在区间[a,b]上改变符号,因此它在这个区间内至少存在一个零点。这是中值定理的结论,因此利用区间减半的方法对这一数值计算思想进行实践运算。设f(x)∈C[a,b],且f(a)f(b)0,用二分法在[a,b]区间寻找实根。记[𝑎1,𝑏1]=[a,b]。取𝑥1=𝑎1+𝑏12是[𝑎1,𝑏1]的中点,若f(𝑥1)=0,则𝑥1是f(x)=0的根,若f(𝑥1)f(𝑎1)0,则取𝑎2=𝑥1,𝑏2=𝑏1,否则取𝑎2=𝑎1,𝑏2=𝑥1。以[𝑎2,𝑏2]取代[𝑎1,𝑏1],继续以上过程,得[𝑎3,𝑏3],⋯,[𝑎𝐾,𝑏𝐾],⋯,K=1,2,⋯。|𝑥𝐾−𝑥∗|=|𝑎𝐾+𝑏𝐾2−𝑥∗|≤12(𝑏𝐾−𝑎𝐾)=12𝐾(𝑏−𝑎),对于指定精度ε,可以估算二分法执行次数K。可得K=[𝑙𝑛𝑏−𝑎𝜀𝑙𝑛2]+1。2.1.2二分法的MATLAB程序%%%二分法function[K,x,f]=erfen(a,b,eps1,eps2,M)数值分析论文tic;u=fun(a);%%%调用需要求解的方程式所表示的函数v=fun(b);e=b-a;forK=1:Me=e/2;c=a+e;%%%以c=a+(b-a)/2方式而不是以c=(a+b)/2方式计中点c,%%%这是因为:通过把一个小的修正项加到先前的近似值法来计算一个量是最佳的。w=fun(c);f=w;%%%输出函数值x=c;%%%输出求得x值ifabs(e)eps1|abs(w)eps2disp('迭代精度满足,终止');break;endifsign(w)~=sign(u)b=c;v=w;elsea=c;u=w;endendtoc;2.2不动点迭代法(简单迭代法)2.2.1不动点迭代法简介将方程f(x)=0写成等价的形式x=φ(x)。若要求𝑥∗满足f(𝑥∗)=0,则小𝑥∗=x=φ(x);反之,若𝑥∗=φ(𝑥∗),则满足f(𝑥∗)=0,则称𝑥∗为函数φ(𝑥∗)的一个不动点。选择一个初始值𝑥0,将其代入x=φ(x)的右端,即可求得:𝑥1=φ(𝑥0)𝑥2=φ(𝑥1)⋯⋯可以如此反复迭代计算:𝑥𝐾+1=φ(𝑥𝐾)(K=0,1,2,⋯)如果由迭代格式𝑥𝐾+1=φ(𝑥𝐾)产生的序列{𝑥𝐾}收敛,即limK→∞𝑥𝐾=𝑥∗则称代法收敛。𝑥∗是x=φ(x)的解。数值分析论文2.2.2不动点迭代法的MATLAB程序%%%不动点迭代法function[K,x,f]=budong(x0,eps1,eps2,M)tic;forK=1:Mx1=gfun(x0);f=fun(x1);x=x1;ifabs(x1-x0)eps1|abs(f)eps2disp('迭代精度满足,终止');break;endx0=x1;endtoc;2.3牛顿法2.3.1牛顿法简介牛顿迭代法一种重要和常用的迭代法,它的基本思想是将非线性函数f(x)线性化,从而将非线性方程f(x)=0近似地转化为线性方程求解。如果取𝑥0为f(x)=0的一个初始近似值,则f(x)在𝑥0点的泰勒展开式为:f(x)=f(𝑥0)+𝑓′(𝑥0)(𝑥−𝑥0)+𝑓′′(𝑥0)2!(𝑥−𝑥0)2+⋯f(x)=f(𝑥0)+𝑓′(𝑥0)(𝑥−𝑥0)=0x=𝑥0−f(𝑥0)𝑓′(𝑥0)把这样计算得到的x作为方程f(x)=0的新的近似解𝑥1,继续这个过程:𝑥1=𝑥0−f(𝑥0)𝑓′(𝑥0)𝑥2=𝑥1−f(𝑥1)𝑓′(𝑥1)⋯⋯𝑥𝐾+1=𝑥𝐾−f(𝑥𝐾)𝑓′(𝑥𝐾)如果limK→∞𝑥𝐾=𝑥∗,则𝑥∗为f(x)=0的根。2.3.2牛顿法的MATLAB程序%%%牛顿法function[K,x,f]=newton(x0,eps1,eps2,M)tic;数值分析论文forK=1:Mx1=x0-fun(x0)/dfun(x0);f=fun(x1);x=x1;ifabs(x1-x0)eps1|abs(f)eps2disp('迭代精度满足,终止');break;endx0=x1;endtoc;2.4简易牛顿法2.4.1简易牛顿法简介简易牛顿法是在牛顿法的基础上,对初始点只求一次导数,然后每次利用𝑓′(𝑥0)代替𝑥𝐾+1=𝑥𝐾−f(𝑥𝐾)𝑓′(𝑥𝐾)中的𝑓′(𝑥𝐾),这样处理后减少了牛顿法的计算量,降低了空间上对各个迭代点导数的存储,但同样降低了运算速率。2.4.2简易牛顿法的MATLAB程序%%%简易牛顿法function[K,x,f]=jiannew(x0,eps1,eps2,M)tic;a=x0;forK=1:Mx1=x0-fun(x0)/dfun(a);f=fun(x1);x=x1;ifabs(x1-x0)eps1|abs(f)eps2disp('迭代精度满足,终止');break;endx0=x1;endtoc;2.5割线法2.5.1割线法简介牛顿法的每一步迭代都要计算一次导数值,而在计算机上,计算一次导数的近似值比计算函数的近似值要麻烦得多。为了避免求导数,用差商近似代替微商:数值分析论文𝑓′(𝑥𝐾)=f(𝑥𝐾)−f(𝑥𝐾−1)𝑥𝐾−𝑥𝐾−1则牛顿迭代改为:𝑥𝐾+1=𝑥𝐾−f(𝑥𝐾)f(𝑥𝐾)−f(𝑥𝐾−1)(𝑥𝐾−𝑥𝐾−1)这种迭代需要前两次的迭代结果,初值要取𝑥0、𝑥1两个值。当f(x)在𝑥∗的某一个邻域内具有二阶导数,且𝑓′(𝑥)≠0,初值𝑥0、𝑥1落在此区域内,则割线法是收敛的。2.5.2割线法的MATLAB

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

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

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

×
保存成功