第4章 非线性方程求根
- 格式:ppt
- 大小:492.01 KB
- 文档页数:20


第四章非线性方程数值求解
基本内容
1. 知道方程的分类
2. 了解如何作根的搜索
3. 不动点迭代的操作:x =(p(x)- > xk+l =(p(xk), k=0, 1•••
4. 收敛性定理:有2个不同意义下的收敛定理。
全局收敛:(1)定义域条件:XG [a,b]时,[ayb];
(2) Lipschitz 条件:|(p(x)-(p(y) |< L|x-y |,Vx,ye [a9b] o (1) (/)E C [a,b]
(2) (p(x) < L < 1,XG [a,h]
局部收敛:(p(x) = 0(F)=..…=0"7(F) = 0, 0”(F)丰 0
则为m阶收敛,lim电~ = Q
迭代加速
松弛法
Aitken 法和 Steffenson 法
牛顿法
7. 割线法
8. 代数方程求根
一.基本题型之一:给定非线性方程组,选择适当的解法求出近似根
基本解法有二分法,不动点迭代法,牛顿法(也是不动点迭代的一屮)和割线法等,有 时需要用有关的加速法。
1.用二分法求解方程2'x4-2cosx=0,使精度|<10-2,并估计最小二分次数。 解:设 /(x) = 2-x +
2cosxo 因为/(l) = 2_1+2cosl>0, /(2) = 2-2+2cos2< 0 , 故在[1,2]中,方程有零点。
又因 / (x) = -2~v In 2- 2sin x,
而 /(l) = -2_1 ln2-2sinl<0, f(2) = -T1 ln2-2sin2<0,
由单调性可知,/(兀)在[1,2]屮有唯一零点。
(1) 先估计二分最少次数。题目要求|无-无_】|<10一2,这与教材中的精度要求(1) (2) b-a
是不一样的,故不能直接用教材里给出的估讣迭代次数的公式,需要另行推导,请同学们注 意此类“陷阱
因为I兀一无(V寫,X严答g二
叽;几,所以要根据两种可能情况来
确定忑-忑T的大小:(注:下图中打印的同学未能把无等打在lak_vbk_{]的中点,所以大
2014-5-5内蒙古大学自动化系
1数值计算与MATLAB第4章求解非线性方程f(x)=0内蒙古大学自动化系
2第四章求解非线性方程f(x)=0
在科学技术中,许多问题常归结为一元函数方
程f(x)=0。方程按f(x)是多项式或超越函数分别称
为代数方程或超越方程。
如果在区间[a,b]内只有方程f(x)=0的一个根,
则称区间[a,b]为隔根区间。
描图法
逐步搜索法第4章求解非线性方程f(x)=0内蒙古大学自动化系
34.1 求解f(x)=0的MATLAB符号法
solve (s1, s2,…,sn, 'v1', 'v2',…, 'vn')
solve (s1, s2,…,sn, 'v1,v2,…,vn')
[z1,z2,…,zn]= solve (s1, s2,…,sn, 'v1', …, 'vn')第4章求解非线性方程f(x)=0内蒙古大学自动化系
4例4-1 由方程ax2
+bx+5=0求出x和b来。
解:键入s1='a*x^2+b*x+5';
或s1='a*x^2+b*x+5=0';
或s1=sym('a*x^2+b*x+5');
或s1=sym('a*x^2+b*x+5=0');
再键入x=solve(s1) 回车得出
若键入b=solve('a*x^2+b*x+5','b')
或b=solve(s1, 'b') 回车得出
b=
-(a*x^2+5)/x
))]2/1()^*202^((*/2/1[))]2/1()^*202^((*/2/1[
abbaabba
x第4章求解非线性方程f(x)=0内蒙古大学自动化系
54.2 求方程f(x)=0数值解的基本方法:
二分法
迭代法
牛顿法
弦截法第4章求解非线性方程f(x)=0内蒙古大学自动化系
64.2.1 求实根的二分法原理
零点存在定理:设方程f(x)=0中的函数f(x)为实
函数,且满足:
①函数f(x)在[a,b]上连续;
②f(a)、f(b)异号
则(a,b)内至少存在一点ζ,使得f(ζ)=0。第4章求解非线性方程f(x)=0内蒙古大学自动化系
数值分析实验报告——非线性方程求根
二分法
一、题目
0.001. .012 .13要求每个根的误差小于的所有根用二分法求方程xx
二、方法
二分法
三、程序
1、Jiangerfen.M的程序
function[c,yc]=jiangerfen(f,a,b,tol1,tol2)
if nargin<4 tol1=1e-3;tol2=1e-3;end
%nargin<4表示若赋的值个数小于4,则tol1和tol2取默认值。
ya=feval('f',a);%令x=a代入到方程f中,ya即f(a)。
yb=feval('f',b);
if ya*yb>0,disp('(a,b)不是有根区间');return,end
max=1+round((log(b -a)-log(tol2))/log(2));%round函数是将数据取整,使数据等于其最接近的整数。
for k=1:max
c=(a+b)/2;
yc=feval('f',c);
if((b-a)/2
if yb*yc<0
a=c;ya=yc;
else
b=c;yb=yc;
end
end
k,c=(a+b)/2,yc=feval('f',c)
2、f.M的程序
function y=f(x);
y=x^3-2*x-1;
四、结果
>> format compact
>> fplot('[x^3-2*x-1,0]',[-1.5,2]);
>> jiangerfen('f',-1.5,-0.8);
k =
8
c =
-0.9996 yc =
3.9017e-004
>> jiangerfen('f',-0.8,-0.3);
k =
8
c =
-0.6184
yc =
2.7772e-004
>> jiangerfen('f',1.3,2);
k =
10
1 第二章 非线性方程求根
本章主要讨论单变量非线性方程:
0)(xf
(2.1)
的求根问题
,].,[)(,baCxfRx
问题:
(1)“根在哪里”,即确定根所在的区间,进行根的隔离。
(2)“根的求法”,通过数值方法,近似求解,并保证精度要求。
若],[)(baCxf
且,0)()(bfaf
根据闭区间上连续函
数性质可知0)(xf
在),(ba
内至少有一个实根,这时称
],[ba
为方程(2.1)的有根区间,通常可通过逐次搜索法求得方程
(2.1)的有根区间。
例 求077.418.381.11)(23
xxxxf
的有根区间。
解 根据有根区间定义,对0)(xf
的根进行搜索计算,
结果如下:
x
0 1 2 3 4 5 6
f
(x
)的符号 - - + + - - +
由此可知方程的有根区间为:]6,5[],4,3[],2,1[
。
根的近似求解:将区间],[ba
分成若干小的子区间,由零点
定理确定根所在的子区间,并根据精度要求,不断细分直到
满足精度要求。最简单的方法就是二分法。
2 §1 二分法
二分法是方程求解的一个简单而可靠的方法。
设],[)(baCxf
且,0)()(bfaf
根据连续函数性质可
知0)(xf
在),(ba
内至少有一个实根*
x
。
二分法
:考察有根区间
],ba
,取中点2/)(
0bax
,将它
分为两半。假设中点
0x
不是)(xf
的零点,然后进行根的搜索,
即检查)(
0xf
与)(af
是否同号,如果同号,说明所求的根*
x
在
0x
的右侧,这时令;,
101bbxa
否则*
x
必在
0x
的左侧,
令
011,xbaa
(如图)。
不管出现哪一种情况,新的有
根区间],[
11ba
的长度仅为],[ba
的一半,对压缩了的有限区间
],[
11ba
再分为两半,然后通过根
的搜索判定所求的根在
1x
的哪一
侧,从而又确定一个新的有根区间
],[
22ba
,其长度是],[
11ba
的一半,如此反复二分下去,即可