f1021是给定的迭代函数。p0是给定的初始值。
2
f
tol是给定的误差界。max1是所允许的最大迭代次数。k是所进行的迭代次数加1。p是不动点的近似值。err是误差。Pp1p2…p
P1p0fork2max1Pkfevalf1021Pk1kerrabsPkPk1pPkiferrtolbreake
difkmax1dispmaximum
umberofiteratio
sexceedede
de
dPP例21
105。
用上述程序求方程si
xx20的一个近似解,给定初始值x005,误差界为
解:先用m文件先定义一个名为f1021m的函数文件。fu
ctio
yf1021xysi
xx建立一个主程序prog1021mclcclearallfixptf10210510520然后在MATLAB命令窗口运行上述主程序,即:prog1021计算结果如下。
kerr
204589
3
fkerrkerrkerrkerrkerrkerrkerrkerrkerr
301052400292500078600021757408e004815525e004941975e0051011350e0051130688e006
PColum
s1through6050000958908537088290875108772
Colum
s7through1108766a
s08768087670876708767
08767
3二分法
31二分法原理
二分法是方程求解最直观、最简单的方法。二分法以连续函数的介值定理为基础的。由介值定理知道,若函数fx区间ab上连续,且fafb0,即fa和fb负号相反,
4
f则fx在ab内一定有实根。二分法的基本思想是:用对分区间的方法根据分点处函数fx的符号逐步将有限区间缩小,使在足够小的区间内,方程有且仅有一根。下面简述其基本步骤。首先记a0ab0b。用中点x0
a0b0将区间a0b0等分成2个小区间:a0x0和2
x0b0。然后分析可能存在的三种情况:
如果fafx00,则x0是零点,也就是方程的根。如果fafx00,则区间a0x0内存在零点。如果fx0fb0,则区间x0b0内存在零点。对有根的新区间施行同样的操作,于是得到一系列有空的区间:
a0b0a1b1a2b2akbk
31
其中每1个区间的长度都是前一区间长度的一半,最后1个区间的长度为:
bkakba2k
32
如果取最后1个区间akbk的中点:
xkbkak2
33
作为fx0根的近似值,则有误差估计式:
xxkbkakbak122
34
对于所给精度,若取k使得
ba2k1
35
则有,
xxk
36
32程序与实例
用二分法求解方程fx0在有根区间ab内的一个根,其中fx在ab只有一个根的情形。
5
fr