- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
数值分析实验五非线性方程求根
组号班级学号姓名分数
一、实验目的
掌握用MATLAB软件求解非线性方程和方程组的根本用法,并对结果做出初步的分析。
学会用二分法、牛顿法求非线性方程的根。
二、实验内容及根本知识介绍
1、二分法
假设∈C(),由连续函数的性质知,如果区间内存在相异的两点对应的函数值异号。那么方程在内至少有一个根。在此我们假设称为有根区间。
为了找到内的根α,令,那么可以按下面的二分法计算
第一步:取中间中点并计算
第二步:如果或那么认为,算法终止;如果||比拟大,那么或大于零或小于零,因而必与异号,就是说要么区间中存在方程的根,要么区间中存在方程的根,如果中存在方程的根,即。返回第一步。如果中存在方程的根,即,也返回第一步。
按二分法求根,只会出现两种情况:一种情况是在某一步成立;一种情况是不断更新的区间的长度h逐次减半,直到趋于零,这时,因为,所以我们就可以认为,因此,二分法必有限步终止。
2、牛顿法计算公式为
k=0,1,2,…
定理设所要求解的方程为,且此方程有根。如果,而且得某个邻域上连续,那么牛顿法是局部收敛的并且至少是二阶收敛的。
设其单根附近有连续的二阶导数,将在处泰勒展开得
从而
当充分靠近时,得
这样导出
由此结果我们预期因此精度更高的近似值。这样牛顿迭代法〔*〕
L
L
从几何上理解,牛顿迭代法每次迭代是用切线代替曲线,所以又称切线法。
牛顿迭代法的映射为显见等价于,故迭代式〔*〕定义合理,由于而是单根时,
牛顿迭代法拒不收敛,且具有二阶收敛速度,计算结果条件一般用,这是由于,当与充分靠近时,L很小,一般能保证。
三、实验问题及方法、步骤
1、二分法
例题:求方程在区间[3,4]内的一个实根,要求精确到小数点后的第二位。
编程如下:
functionx=nabisect(fname,a,b,e)
%用途:二分法解非线性方程
%格式:x=nabisect(fname,a,b,e)fname为用函数句柄或内嵌函数表达的f(x),a,b为区间%端点,e为精度(默认值10-4),x返回解,程序要求函数在两端点值必须异号,中间变量fa,%fb,fx引入可以最大限度减少fname调用次数,从而提高速度
ifnargin4,e=1e-4;end;
fa=feval(fname,a);fb=feval(fname,b);
iffa*fb0,error(‘函数在两端点值必须异号’);end
x=(a+b)/2
while(b-a)(2*e),
fx=feval(fname,x);
iffa*fc0,b=x;fb=fx;elsea=x;fa=fx;end
x=(a+b)/2
end
用于解例题,在MATLAB命令窗口执行:
fun=inline(‘x^3–2*x^2–4*x–7’
05)
33.1
3
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
4
2
3
3.2
3.4
3.6
3.8
4
结果如下表:
n
an
bn
xn
f(xn)
0
3
4
-
1
4
+
2
-
3
+
4
+
5
41
+
6
+
7
-
所以方程的近似根
2、牛顿法
例题:取,用牛顿迭代法求解,使计算结果有4位有效数字。
编程如下:
functionx=nanewton(fname,dfname,x0,e,N)
%用途:Newton迭代法解非线性方程f(x)=0
%格式:x=nanewton(fname,dfname,x0,e,N)fname和dfname分别为表示f(x)及其导函数%的M函数句柄或内嵌函数,x0为迭代初值,e为精度要求(默认1e-4),x返回数值解,并%显示计算过程设置迭代次数上限N以防发散(默认500)
ifnargin5,N=500;end
ifnargin4,e=1e–4;end
x=x0;x0=x+2*e;k=0;
whileabs(x0-x)ekN,
k=k+1;
x0=x;x=x0–feval(fname,x0)/feval(dfname,x0);
disp(x)
end
ifk==N,warning(‘已达迭代
文档评论(0)