《数值分析》课程实验报告
实验名称 用二分法和迭代法求方程的根
成绩
一、实验目的
掌握利用二分法以及迭代法求方程近似根的方法,并学会运用 matlab 软件编写程序,求解出方程的根,对迭代法二分法进一步认识并灵活运用。
二、实验内容
比较求方程 5 0xx e 的根,要求精确到小数点后的第 4 位 1.在区间[0,1]内用二分法;
2.用迭代法1/5kxkx e ,取初值00.25 x .三、算法描述
1、二分法:二分法是最简单的求根方法,它是利用连续函数的零点定理,将汗根区间逐次减半缩小,取区间的中点构造收敛点列{ }来逼近根 x.2、迭代法:迭代法是一种逐次逼近的方法,其步骤是首先给定一个粗糙的初始值,然后用一个迭代公式反复修正这个值,知道满足要求为止。
四、实验步骤
1 1 、二分法:
(1)计算 f(x)在区间[0,1]端点处的值 f(0)和 f(1)的值;
(2)计算 f(x)在区间【0,1】的中点(0+1)/2=1/2 处的值 f((a+b)/2);
(3)如果函数值 f(1/2)=0,则 1/2 是 f(x)=0 的实根,输出根 x,终止;
否则继续转(4)继续做检验。由于 f(1/2)≠0,所以继续做检验。
(4)如果函数值 f(0)* f(1/2)<0,则根在区间[0,1/2]内,这时以 1/2 代表 1;
否则以 1/2 代表 0;
,此时应该用 1/2 代表 1.(5)重复执行(2)(3)(4)步,直到满足题目所要求的精度,算法结束。
2 2 、迭代法
(1)提供迭代初值25 .00 x;
(2)计算迭代值) (0 1x x ;
(3)检查|0 1x x |,若 | |0 1x x,则以1x代替0x转(2)步继续迭代;
当 | |0 1x x时
终止计算,取作为所求结果。
五、程序
(1)二分法程序:
function y=bisection(fx,xa,xb,n,delta)
x=xa;fa=5*x-exp(x);
x=xb;fb=5*x-exp(x);
disp("[
n
xa
xb
xc
fc
]");
for i=1:n
xc=(xa+xb)/2;x=xc;fc=5*x-exp(x);
X=[i,xa,xb,xc,fc];
disp(X),
if fc==0,end
if fc*fa<0
xb=xc;
else xa=xc;
end
if (xb-xa) end (2)迭代法程序: function y=diedai(fx,x0,n,delta) disp("[ k xk ]"); for i=1:n x1=(exp(x0))/5; X=[i,x1]; disp(X); if abs(x1-x0) fprintf("The procedure was successful") return else i=i+1; x0=x1; end end 六、实验结果及分析 (1)二分法: 实验结果如下: [ n xa xb xc fc ] 1.0000 0 1.0000 0.5000 0.8513 2.0000 0 0.5000 0.2500 - - 0.0340 3.0000 0.2500 0.5000 0.3750 0.4200 4.0000 0.2500 0.3750 0 .3125 0.1957 5.0000 0.2500 0.3125 0.2813 0.0815 6.0000 0.2500 0.2813 0.2656 0.0239 7.0000 0.2500 0.2656 0.2578 - - 0.0050 8.0000 0.2578 0.2656 0.2617 0.0094 9.0000 0.2578 0.2617 0.2598 0.0022 10.0000 0.2578 0.2598 0.2588 - - 0.0014 11.0000 0.2588 0.2598 0.2593 0.0004 12.0000 0.2588 0.2593 0.2590 - - 0.0005 13.0000 0.2590 0.2593 0.2592 - - 0.0001 14.0000 0.2592 0.2 593 0.2592 0.0002 15.0000 0.2592 0.2592 0.2592 0.0001 依据题目要求的精度,则需做二分十四次,由实验数据知 x=0.2592 即为所求的根 (2)迭代法: 实验结果如下: 根据题目精度要求,故所求根为 x=0.2592. 对二分法和迭代法的观察和分析我们可以知道,二分法的优点是方法比较简单,编程比较容易, 只是二分法只能用于求方程的近似根,不能用于求方程的复根,且收敛速度慢。而迭代法的收敛速度明显大于二分法的速度。 九十分!