MATLAB与工程计算-期末考试作业

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

12013-2014《Matlab与工程计算》期末作业姓名:王琛学号:系别:电子工程系专业:1.福利彩票双色球玩法为:投注区分为红球号码区和蓝球号码区,红球号码范围为01~33,蓝球号码范围为01~16。双色球每期从01-33个红球中开出6个号码,从01-16个蓝球中开出1个号码作为中奖号码;a)请编写一个函数文件,模拟上述彩票的开奖过程;函数返回开奖号码;调用该函数时,若不带任何输入参数,则开奖一次,若带一个大于或等于1的整数k,则返回k次开奖号码;b)开奖10次,统计红球号码区和蓝球号码区每个号码出现的次数。解:fun_1.m模拟开奖过程,返回开奖号码;调用该函数时,若不带任何输入参数,则开奖一次,若带一个大于或等于1的整数k,则返回k次开奖号码;wangchen1.m调用fun_1.m并输入开奖次数为10,然后可以统计红球号码区和蓝球号码区每个号码出现的次数。functionwangchen1(k)k=input('请输入开奖次数:');%------不输入k或者k不是大于0的整数默认开奖一次------ifk0Tc=fun_1(k);elseTc=fun_1(1);end2fprintf('红球区各个号码出现的次数:\n')fori=1:33a(i)=length(find(Tc(:,1:6)==i));%统计红球号码i的出现次数a(i)fprintf('号码%2d出现%d次',i,a(i));%输出号码i出现a(i)次ifmod(i,8)==0%每8组数据换行fprintf('\n');endendfprintf('\n蓝球区各个号码出现的次数:\n')fori=1:16b(i)=length(find(Tc(:,7)==i));%统计蓝球号码i的出现次数b(i)fprintf('号码%2d出现%d次',i,b(i));%输出号码i出现b(i)次ifmod(i,8)==0%每8组数据换行fprintf('\n');endend%%%%%%%%%---------------------------------------------------functionTc=fun_1(k)fori=1:kA=[1:1:33];%红球B=[1:1:16];%蓝球forj=1:6%从红球中随机开出6次t=randperm(length(A));%对1到length(A)的整数进行随机排序,作为数组A的下标b=A(t);%随机排序后的下标对应的A中的元素赋值给bTc(i,j)=b(1);%选择b中的第一个元素作为从A中随机选取的数字A(t(1))=[];%删除已选取的数字endt=randperm(length(B));%从蓝球中随机开出1次b=B(t);Tc(i,7)=b(1);endfprintf('开奖号码构成的矩阵');Tc%k次开奖号码构成的矩阵运行结果:32.定义正整数(1)的素数阶乘为不大于该整数的所有素数的乘积。试编写一个函数,该函数接受任意大于1的正整数输入,返回该正整数的素数阶乘的精确值。要求函数能接受任意维度和大小的数组(矩阵)输入,返回结果与输入数组(矩阵)具有同样的维度和大小。解:运行程序wangchen2.m文件,可以对任意维度和大小的数组进行操作,使数组内的每一个元素对应的所有比其本身小的素数乘积所得结果构成一个新的数组。functionout=wangchen2(M)M=input('请输入数组M:');[m,n]=size(M);%输入数组的维数out=zeros(m,n);%初试零矩阵fori=1:mforj=1:nifM(i,j)2%如果含有小于2的元素则判定输入有误disp('-------输入有误!请输入大于1的整数-----');break;endprime=primes(M(i,j));%数组中任一元素的所有素数K=cumprod(prime,2);%每一个元素的素数顺序相乘[x,y]=size(K);%求数组k列的维数out(i,j)=K(y);%最后一列是包含所有素数的累乘end4end运行结果:当输入数组是M=[234;567;8910]时,输出结果如下3.编写一个函数完成以下功能:将二维矩阵的最外层元素进行旋转。如下面的红色元素为该矩阵(a)的最外层元素,逆时针旋转一个位置后,矩阵变为(b);逆时针旋转两个位置后,矩阵变为(c);顺时针旋转一个位置后,矩阵变为(d);顺时针旋转一个位置后,矩阵变为(e);要求函数的输入参数为一个二维矩阵M和整数k,函数返回将矩阵M的最外层元素旋转k个位置后的矩阵;k为正时表示逆时针旋转,k为负时表示顺时针旋转,k=0表示不旋转;要求k的默认值为1。解:调用程序wangchen3.m,对于输入的任一个二维矩阵M和旋转系数k,均可以满足题目中要求。functionB=wangchen3(M,k)95162411103147613151128(e)51623911101347681415112(d)31381221110116761559414(c)23138161110125761941415(b)16231351110897612414151(a)5M=input('输入二维数组M:')k=input('输入旋转系数k:')iflength(size(M))~=2%判断是否二维矩阵error('此矩阵不是二维矩阵');endifnargin==1%不带参数k时,默认为1k=1;elsek=k;end[m,n]=size(M);%把外围元素变成一个一维矩阵ut1=M(1,:);%第一行t2=M(2:m-1,n)';%矩阵右侧,不包含首尾行t3=M(m,n:-1:1);%最后一行t4=M(m-1:-1:2,1)';%矩阵左侧,不包含首尾行u=[t1,t2,t3,t4];fori=1:length(u)ifabs(k)length(u)k=mod(k,length(u));%矩阵以k为参数旋转,k大于外围元素个数时求余elsek=k;endifk0&(i-k)=0%矩阵外层元素逆时针旋转y(i-k+length(u))=u(i);elseifk0&(i-k)0y(i-k)=u(i);elseifk0&(i-k)length(u)%矩阵外层元素顺时针旋转y(i-k-length(u))=u(i);elseifk0&(i-k)=length(u)y(i-k)=y(i);elsey=u;endendZ=M;%矩阵y的元素赋给外围矩阵Z(1,:)=y(1:n);Z(2:m-1,n)=y(n+1:n+m-2)';Z(m,n:-1:1)=y(n+m-1:2*n+m-2);Z(m-1:-1:2,1)=y(2*n+m-1:length(u))';B=Z运行程序:当输入二维数组M=[123;456;789]和k=2时,数组外围元素逆时针旋转两次。6如图4.用fft函数编程求如图所示方波的傅立叶级数展开系数,绘制功率谱图,并舍去高次谐波成分,重构原来的方波,用图形观察重构效果.解:调用程序wangchen4.m,首先构造图示方波信号,其次是绘制功率谱图,最后是舍去高次谐波,重构原来的方波。functionwangchen4(K)K=input('请输入重构谐波次数K:');tol=0.001;T=0.5;w=2*pi/T;tx1T….….T=0.5s7t=[0:tol:10-tol];N=length(t);y=0.5*square(w*t)+0.5;%方波信号fx=fftshift(abs(fft(y,N).^2)/N/N);%功率谱,并令关于中心对称f=(0:length(fx)-1)*N/length(fx);s=0;forn=1:2:K%K次谐波重构原信号s=s+sin(w*t*n)/n;endy1=(2/pi)*s+0.5;subplot(311);plot(t,y,'r')title('方波信号');%绘制方波信号axis([0102]);holdonsubplot(312);plot(f,fx,'r');%绘制功率谱图title('功率谱图');subplot(313);plot(t,y1,'r');%K次谐波重构原信号title([num2str(K)'次谐波重构']);axis([01-12]);运行程序:输入重构谐波次数85.计算下列积分:a)多峰函数在平面多边形区域内的积分,该多边形的顶点为(可能用到的函数:inpolygon)x10.3-0.8-0.80.311y00.90.9-0.5-0.800解:调用程序wangchen5_1.m文件,多峰函数peaks在多边形区域内积分functionwangchen5_1X1=[-1:0.01:1];Y1=[-1:0.01:1];[x1,y1]=meshgrid(X1,Y1);%定义二维区间xv=[10.3-0.8-0.80.31];%多边形顶点坐标yv=[00.90.9-0.5-0.80];s=inpolygon(x1,y1,xv,yv);z1=s.*peaks(x1,y1);%获得多边形区域mesh(x1,y1,z1)%绘制多边形区域的三维图out1=trapz(Y1,trapz(X1,z1,2))%计算积分值运行结果:out1=2.4945b)多峰函数在x^2+(y/2)^2=1所描绘的平面曲线上的积分;解:调用程序wangchen5_2.m文件,多峰函数peaks在x^2+(y/2)^2=1区域内积分functionwangchen5_2f2=inline('peaks(cos(t),2*sin(t)).*sqrt(sin(t).^2+4*cos(t).^2)');%构建参数方程,化曲线积分为参数t积分[out2,n]=quadl(f2,0,2*pi);out2运行结果:out2=8.8050c)函数f(x,y,z)=x^2+y^2+z^2在多峰函数所表示的空间曲面上的积分,x和y的积分区间均为[-33]。解:调用程序wangchen5_3.m文件,函数f(x,y,z)=x^2+y^2+z^2在多峰函数所表示的空间曲面上的积分functionwangchen5_3x3=[-1:0.1:1];y3=[-1:0.1:1];z3=[-1:0.1:1];[X3,Y3,Z3]=meshgrid(x3,y3,z3);%剖分网格Z3=peaks(X3,Y3);9f3=X3.^2+Y3.^2+Z3.^2;out3=trapz(z3,trapz(y3,trapz(x3,f3,2)),3)运行结果:out3=28.07856.编写一个函数完成以下功能:输入一个正实数R和一个大于2的整数n,函数绘制半径为R的圆以及该圆的内接正n边形和外切正n边形,函数返回内接正n边形和外切正n边形间的面积S。例如解:调用程序wangchen6.m文件,通过手动输入任意大于0的圆的半径和任意大于2的整数多边形,均可以画出一个圆及其内接多边形和外切多边形,并且在图中显示两个多边形之间的面积。function[S]=wangchen6(R,n)R=input('请输入圆的半径R:');%输入参数n=input('请输入正实数n:');ifn3disp('n输入有误,请重新输入!')%n3不能构成多边形endt1=[0:2*pi/n:2*pi];%用来画多边形t2=[0:2*pi/1000:2*pi];%用来画近似圆形a=pi/n;r1=R/cos(a);%外切多边形顶点距圆心长度s1=(n*R*R*sin((2*pi)/n))/2;%内接多边形面积s2=(n*r1*r1*sin((2*pi)/n))/2;%外切多边形面积S=s2-s1;%两多边形的面积差x=r1*sin(t1);%画外切多边形y=r1*cos(t1);plot(x,y,'b');holdon;%画圆10x=R*sin(t2);y=R*cos(t2);plot(x,y,'k');holdon;x=R*sin(t1);%画内接多边形y

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功