matlab第二章作业

发布 2020-02-19 21:11:28 阅读 4401

第二章作业。

1. 运用递归的思想。

function a=fib(n) %生成长度为n的斐波那契数列。

if n==1

a=1;elseif n==2

a=[1 1];

elseb=fib(n-1);

a=[b,b(end-1)+b(end)];此程序的亮点。

end注意调用时放入work中,例如在指令窗口中输入fib(10)便可得。

程序1用递归调用。

function f=cantor(ax,ay,bx,by) %定义一个函数cantor

c=0.005;d=0.005c为画出的最小的线段的最小长度,d为两条线段之间的距离。

if (bx-ax)>c如果线段的长度大于c,就继续画曲线。

x=[ax,bx];y=[ay,by画图的范围。

hold on;

plot(x,y,'linewidth',2);

hold off用x ,y画直线,刷新图形界面。

cx=ax+(bx-ax)/3坐标变换关系。

cy=ay-dcx,cy,dx,dy分别为中间段的左端和右端坐标。

dx=bx-(bx-ax)/3;

dy=by-d;

ay=ay-d;

by=by-d;

cantor(ax,ay,cx,cy再次调用cantor函数。

cantor(dx,dy,bx,by再次调用cantor函数。

end注意调用时放入work中,例如在指令窗口中输入cantor(1,4,4,4)

程序2自相似的思想。

clear all

u=[0,i];

subplot(3,3,1);

plot(u)

axis([-0.5,0.5,0,1])

for k=1:7

m=u/3;

uuu=[m,m+i*2/3];

subplot(3,3,k+1)

for j=1:2^(k+1)-1 %每次线段数

if mod(j,2)==0;

plot(uuu(j:j+1),'w','markersize',5)

else plot(uuu(j:j+1),'b','markersize',5

endhold on

endaxis([-0.5,0.5,0,1])

u=uuu; end

程序1用递归调用。

function f=koch(ax,ay,bx,by,c) %定义一个函数koch

if (bx-ax)^2+(by-ay)^2 x=[ax,bx];y=[ay,by];

plot(x,y);hold on;

elsecx=ax+(bx-ax)/3第一次将线段变成了四小段,c,e,d分别为新的端点。

cy=ay+(by-ay)/3;

ex=bx-(bx-ax)/3;

ey=by-(by-ay)/3;

l=sqrt((ex-cx)^2+(ey-cy)^2); l是中间线段长。

alpha=atan((ey-cy)/(ex-cx));中间线段与水平方向的角度,存在角度的换算问题。

if (alpha>=0&(ex-cx)<0)|(alpha<=0&(ex-cx)<0) %注意一些特殊的角度变换。

alpha=alpha+pi;

enddy=cy+sin(alpha+pi/3)*l;

dx=cx+cos(alpha+pi/3)*l;

koch(ax,ay,cx,cy,c);

koch(ex,ey,bx,by,c); 再次调用koch函数。

koch(cx,cy,dx,dy,c);

koch(dx,dy,ex,ey,c);

end注意调用时放入work中,koch(0,0,120,0,10);

程序2clear all

u=[0,i];

subplot(3,3,1);

plot(u);

axis([-0.6,0.6,0,1])

for k=2:9

m=u/3将第一条边缩短到1/3 ,并用它重画图

uu=[m,..

i/3+m*((1+sqrt(3)*i)/2m向左旋转60度,沿虚轴上移1/3

(i/2-sqrt(3)/6)+m*((1-sqrt(3)*i)/2m向右旋转60度,沿虚轴上移1/2,沿负实轴平移sqrt(3)/6 ,也可将此句改为(m-i/3)*(1-sqrt(3)*i)/2)+2*i/3也可。

m+2i/3m沿虚轴上移2/3

subplot(3,3,k);

plot(uu)

axis([-0.6,0.6,0,1])

u=uu; end

clear all

u=[0,1];

axis([0,1,-0.4,0.4])

for k=1:4

m=u/4将第一条边缩短到1/4 ,并用它重画图。

uu=[m将画8条线段。

m*i+1/4m向左旋90度,再沿实轴右移1/4

m+1/4+i/4m沿虚轴上移1/4,再沿实轴右移1/4

m*(-i)+i/4+1/2m向右旋90度,再沿实轴右移1/2,沿虚轴上移1/4

m*(-i)+1/2m向右旋90度,再沿实轴右移1/2

m-i/4+1/2m沿虚轴下移1/4,再沿实轴右移1/2

m*i-i/4+3/4m向左旋90度,再沿实轴右移3/4,沿虚轴,下移1/4

m+3/4m沿实轴右移3/4

subplot(2,2,k);

plot(uu)

axis([0,1,-0.4,0.4])

u=uu;end

matlab第二章作业

2.1创建一个有七个元素的一维数组,并做如下处理。1 直接寻访一维数组的第六个元素。2 寻访一维数组的第。一 三 五个元素。3 寻访一维数组中第四个至最后一个元素。4 寻访一维数组中大于70的元素。a linspace 1,200,7 创建一个有七个元素的一维数组。a columns 1 throu...

MATLAB第二章作业解答

2010级通信工程专业学号姓名 2.13 题目略。变量说明 无。程序 a 5 2 b 5 3 5 6 c 4 6 3 1 2 d 9 6 12 7 5 3 2 e 1 5 3 6 2 2 2 4 1 5.5运行结果 a 25 b 0.2667 c 14.8324 d 2.1885e 004 e 1....

第二章MATLAB

2 matlab 一个强有力的科学计算与。控制系统cad软件。2.1 概述。matlab的名字由matrix和laboratory两词的前三个字母组合而成,始创者是时任美国新墨西哥大学计算机科学系主任的cleve moler教授。于1984年由mathworks公司推出 dos版 1993年推出ma...