(完整版)哈工大-数值分析上机实验报告 联系客服

发布时间 : 星期一 文章(完整版)哈工大-数值分析上机实验报告更新完毕开始阅读2007691d302b3169a45177232f60ddccdb38e645

if strcmp(ss,'y')

x0=input('input initial value x0>>'); k=0; else break end end end

k;%给出迭代次数 x=x0;%给出解

结果分析和讨论:

1. 用二分法计算方程在[1,2]内的根。(,下同) 计算结果为

x= 1. 23;

f(x)= -3. 311e-007; k=18;

由f(x)知结果满足要求,但迭代次数比较多,方法收敛速度比较慢。

2. 用二分法计算方程在[1,1.5]内的根。 计算结果为

x= 1. 80;

f(x)= 2. 815e-006; k=17;

由f(x)知结果满足要求,但迭代次数还是比较多。

3. 用Newton法求解下列方程 a) x0=0.5; 计算结果为

x= 0. 78; f(x)= 2. 313e-016; k=4;

由f(x)知结果满足要求,而且又迭代次数只有4次看出收敛速度很快。

b) x0=1;

c) x0=0.45, x0=0.65;

当x0=0.45时,计算结果为

x= 0. 83;

f(x)= -8. 584e-014; k=4;

由f(x)知结果满足要求,而且又迭代次数只有4次看出收敛速度很快,实际上该方程确实有真解x=0.5。

当x0=0.65时,计算结果为

x= 0. 00;

f(x)=0; k=9;

由f(x)知结果满足要求,实际上该方程确实有真解x=0.5,但迭代次数增多,实际上当取x0〉0.68时,x≈1,就变成了方程的另一个解,这说明Newton法收敛与初值很有关系,有的时候甚至可能不收敛。

4. 用改进的Newton法求解,有2重根,取 x0=0.55;并与3.中的c)比较结果。

当x0=0.55时,程序死循环,无法计算,也就是说不收敛。改时,

结果收敛为

x=0. 86; f(x)=4. 127e-007; k=16;

显然这个结果不是很好,而且也不是收敛至方程的2重根上。

当x0=0.85时,结果收敛为

x= 1. 89; f(x)= 2. 737e-023; k=4;

这次达到了预期的结果,这说明初值的选取很重要,直接关系到方法的收敛性,实际上直接用Newton法,在给定同样的条件和精度要求下,可得其迭代次数k=15,这说明改进后的Newton法法速度确实比

较快。 结论:

对于二分法,只要能够保证在给定的区间内有根,使能够收敛的,当时收敛的速度和给定的区间有关,二且总体上来说速度比较慢。Newton法,收敛速度要比二分法快,但是最终其收敛的结果与初值的选取有关,初值不同,收敛的结果也可能不一样,也就是结果可能不时预期需要得结果。改进的Newton法求解重根问题时,如果初值不当,可能会不收敛,这一点非常重要,当然初值合适,相同情况下其速度要比Newton法快得多。