您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > matlab经典编程例题
以下各题均要求编程实现,并将程序贴在题目下方。1.从键盘输入任意个正整数,以0结束,输出那些正整数中的素数。clc;clear;zzs(1)=input('请输入正整数:');k=1;n=0;%素数个数whilezzs(k)~=0flag=0;%是否是素数,是则为1foryz=2:sqrt(zzs(k))%因子从2至此数平方根ifmod(zzs(k),yz)==0flag=1;break;%非素数跳出循环endendifflag==0&zzs(k)1%忽略0和1的素数n=n+1;sus(n)=zzs(k);endk=k+1;zzs(k)=input('请输入正整数:');enddisp(['你共输入了'num2str(k-1)'个正整数。它们是:'])disp(zzs(1:k-1))%不显示最后一个数0ifn==0disp('这些数中没有素数!')%无素数时显示elsedisp('其中的素数是:')disp(sus)end2.若某数等于其所有因子(不含这个数本身)的和,则称其为完全数。编程求10000以内所有的完全数。clc;clear;wq=[];%完全数赋空数组forii=2:10000yz=[];%ii的因子赋空数组forjj=2:ii/2%从2到ii/2考察是否为ii的因子ifmod(ii,jj)==0yz=[yzjj];%因子数组扩展,加上jjendendifii==sum(yz)+1wq=[wqii];%完全数数组扩展,加上iiendenddisp(['10000以内的完全数为:'num2str(wq)])%输出3.下列这组数据是美国1900—2000年人口的近似值(单位:百万)。时间t19001910192019301940195019601970198019902000人口y7692106123132151179203227250281(1)若.2cbtatyty的经验公式为与试编写程序计算出上式中的a、b、c;(2)若.btaeyty的经验公式为与试编写程序计算出上式中的a、b;(3)在一个坐标系下,画出数表中的散点图(红色五角星),cbxaxy2中拟合曲线图(蓝色实心线),以及.btaey(黑色点划线)。(4)图形标注要求:无网格线,横标注“时间t”,纵标注“人口数(百万)”,图形标题“美国1900—2000年的人口数据”。(5)程序中要有注释,将你的程序和作好的图粘贴到这里。clf;clc;clear%清除图形窗、屏幕、工作空间t=1900:10:2000;y=[7692106123132151179203227250281];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))'''c='num2str(p1(3))]));…..﹙2﹚yy=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﹚%图形窗的进一步设定gridoff;xlabel('时间t');ylabel('人口数(百万)');…..﹙4﹚title('美国1900—2000年的人口数据');1900191019201930194019501960197019801990200050100150200250300时间t人口数(百万)美国1900—2000年的人口数据4.附加题某正整数的三次方是四位数,四次方是六位数,四位数和六位数的各位数字正好是0~9这十个数字,求此正整数。clc;clear;forii=10:40%10的三次方是最小四位数,40的四次方超过六位i3=num2str(ii^3);i4=num2str(ii^4);%三四次方均转为字符iflength(i3)==4&length(i4)==6%长度判断i_34=sort([i3i4]);%两数合并后升序排列ifisequal(i_34,char(48:57))%是否为0至9字符串disp(['这个数是'num2str(ii)])disp(['它的三次方是'i3',''四次方是'i4])endendend
本文标题:matlab经典编程例题
链接地址:https://www.777doc.com/doc-4192396 .html