二分法和牛顿迭代法求解方程的比较

二分法和牛顿迭代法求解方程的比较
二分法和牛顿迭代法求解方程的比较

二分法和牛顿迭代法求解方程的比较

200822401018 徐小良

一、问题叙述

求解12「3x ? 2cosx =0的解;通过编写 matlab程序分别用分析二分法和牛顿迭代法求解方程,通过两种方法的比较,分析二者求解方程的快慢程度。

二、问题分析

由matlab画图命令,容易得到此方程解的范围为(2,4);两种迭代方法,在使用相同

的误差(0.00001 )的情况下,得出 matlab迭代次数,通过次数的比较得出二者求解速度快慢比较。三、实验程序及注释

(1)、二分法程序:

clear; %清除所有内存数据;

f=inlin e('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)、牛顿迭代法程序:

clear;

f=inlin e('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;

%清除所有内存数据;

%数据显示格式设为长型; %求解区间;

、%牛顿迭代法求解程序;

四、实验数据结果及分析

表1 :二分法程序结果

通过表1可知,在二分法下,程序迭代了 17次后和第18次的结果一致,即程序迭代了 17次达到要求的试验误差;通过表 2可知,在牛顿迭代法下,程序迭代了 4次后和第5次的结果一致,即程序迭代了 4次达到要求的试验误差;

二者比较明显可以看出牛顿迭代法的求解效率要远远优于二分法。

a=t;y=f(a)

; k=k+1;

disp([b,a]);%显示各个区间值和求解次数;

end

disp([b,a]%显示最后一个区间值;

多面体旋转实验

200822401018 徐小良

、问题叙述:

编写matlab程序实现对正立方体的旋转,并用适当的方法来验证程序设计的正确性。

、问题分析:

使用相对应的三个正交矩阵即可实现对三位图形进行各个方向的旋转,在此不再赘述。

■1

]

- cosp

0 sin 阳 -

cosf -sinY 0〔 Q x (ot)=

0 cosot _sina , Q y (P)=

1

,Q z (Y) =

sin/ cosY 0

1

0 sino(

cosa

1

-sinP

0 COSp 1

0 0 1

使用moviein 命令,就可以对原正立方体和旋转以后的三位图形进行全方位的观测;为观 测的方便,可在立方体各个面上涂不同的颜色加以区分。 三、试验程序以及注释:

(1)、主题函数:

clear;

%

清除以前所有数据,以防干扰

[X,Y,Z]=peaks(30); m=movie in (30);

%

扑捉相关画面

B0=[0 0 0;1 0 0;1 1 0;0 1 0;0 0 1;1 0 1;1 1 1;0 1 1]; n=8;

%

延时相关因子

view(-25,16); B=B0;cube(B); for i=1:30

view(10*(i-1),10*(i-1)) % 设置观测点

m(:,i)=getframe;

%

end

Qz=[cos(pi/2) -sin(pi/2) 0;sin(pi/2) cos(pi/2) 0;0 0 1];

Qy=[cos(-pi/4) 0 sin(-pi/4);0 1 0;-sin(-pi/4) 0 cos(-pi/4)];

Qx=[1 0 0;0 cos(pi/4) -si n(pi/4);0 sin (pi/4) cos(pi/4)]; >

B=B*Qz';cube(B); B=B*Qz';cube(B);

%

立方体旋转

B=B*Qz';cube(B);

B=B0*Qy';B=B*Qx';B(:,3)=B(:,3)+1; cube(B); view(-25,16); for i=1:30

view(3-10*(i-1),10) m(:,i)=getframe; delay (n); end

(2)、Cube 函数:

观察立方体

delay( n); %

延时一定时间,以便观测

fun cti on cube(B)

fac=[1 2 3 4;1 2 6 5;1 4 8 5;7 8 5 6;7 3 2 6;7 3 4 8];

patch('faces',fac(1,:),'vertices',B,'faceColor','m'); % 在不同面涂不同颜色

patch('faces',fac(2,:),'vertices',B,'faceColor','b');

patch('faces',fac(3,:),'vertices',B,'faceColor',T);

patch('faces',fac(4,:),'vertices',B,'faceColor','c');

patch('faces',fac(5,:),'vertices',B,'faceColor','g');

patch('faces',fac(6,:),'vertices',B,'faceColor','y');

(3)、delay 函数: 延时函数

fun cti on delay (n)

tic

M=10000000;

N=M* n;

for k=0:N

M=M*1-1;

end

延时时间计算toc %

四、试验结果:

通过程序仿真可观测到,立方体不同侧面的颜色,以此检测图色的正确性。

当旋转后,经过程序仿真观测旋转后的图形各个侧面的颜色,以此观测旋转的正确性。

Ti Siu*-

五、试验结论:

在程序中我们设置:

第一个面为’m'紫色;(最下面一个面)

第二个面为’b'蓝色;

第三个面为’r'红色;

第四个面为’c'青色;(最上面一个面)

第五个面为’g'绿色;

最后一个面为’y'黄色。

其分析图形如下如所示:

相关主题
相关文档
最新文档