二分法及牛顿迭代法求解方程的比较.doc
文本预览下载声明
二分法和牛顿迭代法求解方程的比较
200822401018 徐小良
问题叙述
求解的解;通过编写matlab程序分别用分析二分法和牛顿迭代法求解方程,通过两种方法的比较,分析二者求解方程的快慢程度。
问题分析
由matlab画图命令,容易得到此方程解的范围为(2,4);两种迭代方法,在使用相同的误差(0.00001)的情况下,得出matlab迭代次数,通过次数的比较得出二者求解速度快慢比较。
实验程序及注释
(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 erer0
x0=.5*(a+b);
y0=f(x0);
if ya*y00
b=x0; %二分法求解程序;
else
a=x0;
ya=y0;
end
disp([a,b]);er=b-a;k=k+1 %显示各个区间值和求解次数;
end
disp([a,b]); %显示最后一个区间值;
(2)、牛顿迭代法程序:
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:二分法程序结果
迭代次数区间值:a区间值:b13.000000000000003.5000000000000023.25000000000000 3.5000000000000033.25000000000000 3.3750000000000043.31250000000000 3.37500000000000......…………143.34735107421875 3.34741210937500153.34738159179688 3.34741210937500163.34739685058594 3.34741210937500173.34739685058594 3.34740447998047183.34739685058594 3.34740447998047表2:牛顿迭代法程序结果
迭代次数区间值:b区间值:a13.43828213866291 3.3199556816049223.31995568160492 3.3483632970400433.34836329704004 3.3474127204823343.34741272048233 3.3474028396087953.34741272048233 3.34740283960879实验结论
通过表1可知,在二分法下,程序迭代了17次后和第18次的结果一致,即程序迭代了17次达到要求的试验误差;通过表2可知,在牛顿迭代法下,程序迭代了4次后和第5次的结果一致,即程序迭代了4次达到要求的试验误差;
二者比较明显可以看出牛顿迭代法的求解效率要远远优于二分法。
多面体旋转实验
200822401018 徐小良
问题叙述:
编写matlab程序实现对正立方体的旋转,并用适当的方法来验证程序设计的正确性。
问题分析:
使用相对应的三个正交矩阵即可实现对三位图形进行各个方向的旋转,在此不再赘述。
,,
使用moviein命令,就可以对原正立方体和旋转以后的三位图形进行全方位的观测;为观
显示全部