資源描述:
《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;%非素數跳出循環(huán)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