-
二分法和牛顿迭代法求解方程的比较
2
徐小良
一、问题叙述
求解
< br>12
?
3
x
?
2cos
x
?
< br>0
的解;通过编写
matlab
程序分别用分析二分法和牛顿迭代法
求解方程,通过两种方法的比较,分析二者求解方程
的快慢程度。
二、问题分析
由
matlab
画图命令,容易得到此方程解
的范围为(
2
,
4
)
;两种迭代方法,在使用相同
的误差(
< br>0.00001
)的情况下,得出
matlab
迭代次数,通过次数的比较得出二者求解速度快
慢比较。
三、实验程序及注释
(<
/p>
1
)
、二分法程序:
clear;
%
清除所有内存数据;
f=inline('12-3*x+2*cos(x)');
format long
%
数据显示格式设为长型;
a=2;b=4;
%
求解区间;
er=b-a;ya=f(a);k=0;er0=0.00001;
%
误差分析;
while er>er0
x0=.5*(a+b);
y0=f(x0);
if
ya*y0<0
b=x0;
%
二分法求解程序;
else
a=x0;
ya=y0;
end
disp([a,b]);er=b-a;k=k+1
%
显示各个区间值和求解次数;
end
disp([a,b]);
%
显示最后一个区间值;
(
2
)
p>
、牛顿迭代法程序:
clear;
%
清除所有内存数据;
f=inline('12-3*x+2*cos(x)');
format long
%
数据显示格式设为长型;
b=3;a=4;k=0;
%
求解区间;
y0=f(b);y=f(a);
while
abs(b-a)>0.00001
t=a-y*(a-b)/(y-y0);
b=a;y0=y;
%
牛顿迭代法求解程序;
a=t;y=f(a);
k=k+1;
disp([b,a]);k
%
显示各个区间值和求解次数;
end
disp([b,a]);
%
显示最后一个区间值;
四、实验数据结果及分析
表
1
:二分法程序结果
迭代次数
1
2
3
4
......
14
15
16
17
18
迭代次数
1
2
3
4
5
3.34735107421875
3.34738159179688
3.34739685058594
3.34739685058594
3.34739685058594
区间值:
b
3.43828213866291
3.392
3.34836329704004
3.34741272048233
3.34741272048233
三、试验程序以及注释:
(
1
)、主题函数:
区间值:
a
3.00
3.25
3.25
3.3125
……
区间值:
b
3.50
3.50
3.375
3.375
……
3.34741210937500
3.34741210937500
3.34741210937500
3.3474
3.3474
区间值:
a
3.392
3.34836329704004
3.34741272048233
3.3474
3.3474
表
2
< br>:牛顿迭代法程序结果
五、实验结论
通过表
1
可知,
在二分法下,
程序迭
代了
17
次后和第
18
次的结果一致,
即程序迭代了
17
次达到要求的试验误差;通过表
2
可知,在牛顿迭代法下,
程序迭代了
4
次后和第
5
次
的结果一致,即程序迭代了
4
次达到要求的试验误差;
二者比较明显可以看出牛顿迭代
法的求解效率要远远优于二分法。
多面体旋转实验
2
徐小良
一、问题叙述:
编写
matlab
程序实现对正立方体的旋转,并用适当的方法来验证程序设计的正
确性。
二、问题分析:
使用相对应的三个正交矩阵即可实现对三位图形进行各个方向的旋转,在此不再赘述。
?
cos
?
?
sin
?
0
?
?
cos
?
0
sin
?
?
0
0
?
?
< br>1
?
?
,
Q
(
?
)
?
?
sin
?
?
,
Q
(
p>
?
)
?
?
0
cos
?
0
1
0
Q
x
(
?
)
?
< br>?
0
cos
?
< br>?
sin
?
z
< br>y
?
?
?
?
?
?
?
?
?
0
1
?
p>
?
0
?
?
?
sin
?
0
cos
?
?
?
?
0
sin
?
cos
?
?
?
使用
moviein
命令,就可以对原正立方体
和旋转以后的三位图形进行全方位的观测;为观
测的方便,可在立方体各个面上涂不同的
颜色加以区分。