Newton迭代法求解非线性方程.docx

上传人:b****0 文档编号:17578580 上传时间:2023-07-26 格式:DOCX 页数:14 大小:108KB
下载 相关 举报
Newton迭代法求解非线性方程.docx_第1页
第1页 / 共14页
Newton迭代法求解非线性方程.docx_第2页
第2页 / 共14页
Newton迭代法求解非线性方程.docx_第3页
第3页 / 共14页
Newton迭代法求解非线性方程.docx_第4页
第4页 / 共14页
Newton迭代法求解非线性方程.docx_第5页
第5页 / 共14页
Newton迭代法求解非线性方程.docx_第6页
第6页 / 共14页
Newton迭代法求解非线性方程.docx_第7页
第7页 / 共14页
Newton迭代法求解非线性方程.docx_第8页
第8页 / 共14页
Newton迭代法求解非线性方程.docx_第9页
第9页 / 共14页
Newton迭代法求解非线性方程.docx_第10页
第10页 / 共14页
Newton迭代法求解非线性方程.docx_第11页
第11页 / 共14页
Newton迭代法求解非线性方程.docx_第12页
第12页 / 共14页
Newton迭代法求解非线性方程.docx_第13页
第13页 / 共14页
Newton迭代法求解非线性方程.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Newton迭代法求解非线性方程.docx

《Newton迭代法求解非线性方程.docx》由会员分享,可在线阅读,更多相关《Newton迭代法求解非线性方程.docx(14页珍藏版)》请在冰点文库上搜索。

Newton迭代法求解非线性方程.docx

Newton迭代法求解非线性方程

 

Newton迭代法求解非线性方程

 

一、Newton迭代法概述

构造迭代函数的一条重要途径是用近似方程来代替原方程去求根。

因此,如果能将非线性方程

用线性方程去代替,那么,求近似根问题就很容易解决,而且十分方便。

牛顿(Newton)法就是一种将非线性方程线化的一种方法。

是方程

的一个近似根,把如果

处作一阶Taylor展开,即:

(1-1)

于是我们得到如下近似方程:

(1-2)

,则方程的解为:

(1-3)

作为原方程的新近似根

,即令:

k=0,1,2,…(1-4)

上式称为牛顿迭代格式。

用牛顿迭代格式求方程的根的方法就称为牛顿迭代法,简称牛顿法。

牛顿法具有明显的几何意义。

方程:

(1-5)

是曲线

上点

处的切线方程。

迭代格式(1-4)就是用切线式(1-5)的零点来代替曲线的零点。

正因为如此,牛顿法也称为切线法。

牛顿迭代法对单根至少是二阶局部收敛的,而对于重根是一阶局部收敛的。

一般来说,牛顿法对初值

的要求较高,初值足够靠近

时才能保证收敛。

若要保证初值在较大范围内收敛,则需对

加一些条件。

如果所加的条件不满足,而导致牛顿法不收敛时,则需对牛顿法作一些改时,即可以采用下面的迭代格式:

(1-6)

上式中,

,称为下山因子。

因此,用这种方法求方程的根,也称为牛顿下山法。

牛顿法对单根收敛速度快,但每迭代一次,除需计算

之外,还要计算

的值。

如果

比较复杂,计算

的工作量就可能比较大。

为了避免计算导数值,我们可用差商来代替导数。

通常用如下几种方法:

1.割线法

如果用

代替

,则得到割线法的迭代格式为:

(1-7)

2.拟牛顿法

如果用

代替

,则得到拟牛顿法的迭代格式为:

(1-8)

3.Steffenson法

如果用

代替

,则得到拟牛顿法的迭代格式为:

(1-9)

二、算法分析

1.割线法

割线法的迭代公式为:

k=0,1,2,…

割线法是超线性收敛,其程序流程图为:

2.拟牛顿法

牛顿拟迭代法迭代公式为:

(1)对单根条件下,牛顿拟迭代法平方收敛,牛顿拟迭代法程序框图如下所示:

 

(2)对重根条件下,此时迭代公式修改为:

m为根的重数

此时,牛顿迭代法至少平方收敛。

3.Steffenson法

Steffenson迭代法程序流程图与牛顿拟迭代法类似。

三、牛顿法的程序

给定初值

,用牛顿法格式

,求解非线性方程

*********************************************************************

function[p1,err,k,y]=newton(f1041,df1041,p0,delta,max1)

%f1041是非线性函数。

%df1041是f1041的微商。

%p0是初始值。

%delta是给定允许误差。

%max1是迭代的最大次数。

%p1是牛顿法求得的方程的近似解。

%err是p0的误差估计。

%k是迭代次数。

%y=f(p1)

p0,feval('f1041',p0)

fork=1:

max1

p1=p0-feval('f1041',p0)/feval('df1041',p0);

err=abs(p1-p0);

p0=p1;

p1,err,k,y=feval('f1041',p1)

if(err

break,

end

p1,err,k,y=feval('f1041',p1)

end

*********************************************************************

四、程序实例与计算结果

例用上述程序求方程

的一个近似解,给定初值为,误差界为

解:

先用m文件先定义二个名为和的函数文件。

functiony=f1041(x)

y=x^3–3*x+2;

functiony=df1041(x)

y=3*x^2-3;

建立一个主程序

clear

newton('f1041','df1041',,10^(-6),18)

然后在MATLAB命令窗口运行上述主程序,即:

>>prog1041

计算结果如下:

p0=

ans=

p1=

err=

k=1

y=

p1=

err=

k=1

y=

p1=

err=

k=2

y=

p1=

err=

k=2

y=

p1=

err=

k=3

y=

p1=

err=

k=3

y=

p1=

err=

k=4

y=

p1=

err=

k=4

y=

p1=

err=

k=5

y=

p1=

err=

k=5

y=

p1=

err=

k=6

y=

p1=

err=

k=6

y=

p1=

err=

k=7

y=

p1=

err=

k=7

y=

p1=

err=

k=8

y=

p1=

err=

k=8

y=

p1=

err=

k=9

y=

p1=

err=

k=9

y=

p1=

err=

k=10

y=

p1=

err=

k=10

y=

p1=

err=

k=11

y=

p1=

err=

k=11

y=

p1=

err=

k=12

y=

p1=

err=

k=12

y=

p1=

err=

k=13

y=

p1=

err=

k=13

y=

p1=

err=

k=14

y=

p1=

err=

k=14

y=

p1=

err=

k=15

y=

p1=

err=

k=15

y=

p1=

err=

k=16

y=

p1=

err=

k=16

y=

p1=

err=

k=17

y=

p1=

err=

k=17

y=

p1=

err=

k=18

y=

ans=

这说明,经过18次迭代得到满足精度要求的值。

以下是程序运行截图:

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

当前位置:首页 > 医药卫生

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2