资源描述:
《matlab经典编程例题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、以下各题均要求编程实现,并将程序贴在题目下方。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('请输入正整
2、数:');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=[y
3、zjj];%因子数组扩展,加上jjendendifii==sum(yz)+1wq=[wqii];%完全数数组扩展,加上iiendenddisp(['10000以内的完全数为:'num2str(wq)])%输出3.下列这组数据是美国1900—2000年人口的近似值(单位:百万)。时间t19001910192019301940195019601970198019902000人口y7692106123132151179203227250281(1)若试编写程序计算出上式中的a、b、c;(2)若试编写程序计算出上式中的a、b;(3)在一个坐标系下,画出数表中的散点图(红色
4、五角星),中拟合曲线图(蓝色实心线),以及(黑色点划线)。(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=
5、'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('人口数(百万)');…..
6、﹙4﹚title('美国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(['这个数是
7、'num2str(ii)])disp(['它的三次方是'i3',''四次方是'i4])endendend