数值分析实验五 非线性方程的求根1.docxVIP

数值分析实验五 非线性方程的求根1.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE

PAGE1

数值分析实验五 非线性方程的求根

组号班级 学号 姓名 分数

一:实验目的

1、掌握用二分法解非线性方程的方法。

2、掌握用迭代法解非线性方程的方法。

3、掌握用牛顿法解非线性方程的方法。

4、学会运用Matlab语言解决提供的函数求解实际问题。

二:实验内容所需的基本知识

二分法的原理:

设f(x)在[a,b]上连续,且 f(a)?f(b)?0。则[a,b]为方程区间(设只有唯一根)。取中点

1

x ? (a?b),检查f(a)与f(x

0 2 0

)是否同号,若同号,说明根x*与b之间,此时a

1

?x,b

0 1

?b;若异

号,说明根x*在a与x

0

1

之间,此时a

1

?a,b

1

?x,得新区间[a,b

0 1 1

]为原区间的一半。对[a,b

1 1

]进行上

述过程,取中点x

1

? (a2 1

b),检查f(a

1 1

)与f(x

1

)是否同号,如此反复二分下去,即可得出一系列有

根区间[a,b]?[a,b

1 1

]?[a,b

2 2

]?…?[a,b

k k

]?…,其中每个区间都是前一个区间的一半,因此

[a,b

k k

]的长度b ?a

k k

?(b?a)2k,当k??时趋于零,就是说,如果二分过程无限地继续下去,这

些区间最终必收缩于一点x*,该点显然就是所求的根。

迭代法原理:

首先给定一个粗糙的初始值,然而用一个迭代公式反复校正这个初值,将已有近似根逐步精确化,一直到满足精度要求为止。

具体地,把方程f(x)?0改写成x的等价表达式x??(x),若x*??(x*),称x*为?(x)的一个不动点,求f(x)的零点就等价于求?(x)的不动点。

任取一点x代入?(x)求得

0

x ??(x

1 0

) 又将x

1

代入?(x)求得

x ??(x

2 1

) 如此反复迭代下去

一般地 x ??(x) k=0,1,2,………

k?1 k

?(x)称为迭代函数,x??(x)称为迭代公式。若迭代序列{x

k

}有极限,即limx

k?? k

?x*,则称迭代方程

xk?1??(xk),k=0,1,2,…收敛,这时x*显然是x??(x)的不动点。

牛顿(Newton)法:

将非线性方程f(x)?0逐步转化为某种线性方程求解。已知f(x)?0的一个近似根x,则函数f(x)在

0

点x附近可以用一阶泰勒公式来近似,f(x)?f(x)?f(x)(x?x)?0,若f(x)?0,解得

0 0 0 0 0

f(x)

x?x

0 ,将此根记为原方程的近似根x,然后按上式迭代计算,使形成一种新的迭代公式:

0 f(x) 1

0

x ?x

f(xk)

,k?0,1,2,

k?1

k f(x)

k

三:实验问题、方法及步骤

1、用二分法解方程x3?x?1?0在区间[1.0,1.5]上的一个根。

解 先按照二分法的基本原理编写二分发的MATLAB程序(程序命名为:HalfInterval.m),编程如下:

functionroot=HalfInterval(f,a,b,eps)if(nargin==3)

eps=1.0e-4

endf1=subs(sym(f),findsym(sym(f)),a);

f2=subs(sym(f),findsym(sym(f)),b);if(f1==0)

root=a;

endif(f2==0)

root=b;

endif(f1*f20)

disp(两端点函数值乘积大于0!);

return;

else

end

root=FindRoots(f,a,b,eps);

functionr=FindRoots(f,a,b,eps)f_1=subs(sym(f),findsym(sym(f)),a);

f_2=subs(sym(f),findsym(sym(f)),b);

mf=subs(sym(f),findsym(sym(f)),(a+b)/2);if(f_1*mf0)

t=(a+b)/2;r=FindRoots(f,t,b,eps);

else

if(f_1*mf==0)

r=(a+b)/2;

else

if(abs(b-a=eps))r

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档