《matlab经典编程例题.doc》由会员分享,可在线阅读,更多相关《matlab经典编程例题.doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、以下各题均要求编程实现,并将程序贴在题目下方。1从键盘输入任意个正整数,以0结束,输出那些正整数中的素数。clc;clear;zzs(1)=input(请输入正整数: );k=1;n=0;%素数个数while zzs(k)=0 flag=0;%是否是素数,是则为1 for yz=2:sqrt(zzs(k)%因子从2至此数平方根 if mod(zzs(k),yz)=0 flag=1;break;%非素数跳出循环 end end if flag=0&zzs(k)1%忽略0和1的素数 n=n+1;sus(n)=zzs(k); end k=k+1; zzs(k)=input(请输入正整数: );end
2、disp(你共输入了 num2str(k-1) 个正整数。它们是:)disp(zzs(1:k-1)%不显示最后一个数0if n=0 disp(这些数中没有素数!)%无素数时显示else disp(其中的素数是:) disp(sus)end2若某数等于其所有因子(不含这个数本身)的和,则称其为完全数。编程求10000以内所有的完全数。clc;clear;wq=;%完全数赋空数组for ii=2:10000 yz=;%ii的因子赋空数组 for jj=2:ii/2 %从2到ii/2考察是否为ii的因子 if mod(ii,jj)=0 yz=yz jj;%因子数组扩展,加上jj end end if
3、 ii=sum(yz)+1 wq=wq ii;%完全数数组扩展,加上ii endenddisp(10000以内的完全数为: num2str(wq)%输出3下列这组数据是美国19002000年人口的近似值(单位:百万)。时间t19001910192019301940195019601970198019902000人口y7692106123132151179203227250281(1) 若试编写程序计算出上式中的a、b、c;(2) 若试编写程序计算出上式中的a、b;(3) 在一个坐标系下,画出数表中的散点图(红色五角星),中拟合曲线图(蓝色实心线),以及 (黑色点划线)。(4) 图形标注要求:无
4、网格线,横标注“时间t”,纵标注“人口数(百万)”,图形标题“美国19002000年的人口数据”。(5) 程序中要有注释,将你的程序和作好的图粘贴到这里。clf;clc;clear %清除图形窗、屏幕、工作空间t=1900:10:2000;y=76 92 106 123 132 151 179 203 227 250 281;p1=polyfit(t,y,2);%二次多项式拟合y1=polyval(p1,t);%求拟合多项式函数值 .1% 显示拟合多项式及其系数a,b,cdisp(char(y= poly2str(p1,t),a= num2str(p1(1) b= num2str(p1(2)
5、c= num2str(p1(3); .2yy=log(y);%指数拟合必需的线性化变形p2=polyfit(t,yy,1);%拟合b=p2(1);a=exp(p2(2);%求出指数拟合中的a,by2=a*exp(b*t);%指数拟合函数式plot(t,y,rp,t,y1,t,y2,k-.);%三类数据作图 .3%图形窗的进一步设定grid off;xlabel(时间t);ylabel(人口数(百万); .4title(美国19002000年的人口数据);4附加题某正整数的三次方是四位数,四次方是六位数,四位数和六位数的各位数字正好是09这十个数字,求此正整数。clc;clear;for ii=10:40%10的三次方是最小四位数,40的四次方超过六位 i3=num2str(ii3);i4=num2str(ii4);%三四次方均转为字符 if length(i3)=4 & length(i4)=6%长度判断 i_34=sort(i3 i4);%两数合并后升序排列 if isequal(i_34,char(48:57)%是否为0至9字符串 disp(这个数是 num2str(ii) disp(它的三次方是 i3 , 四次方是 i4) end endend