mat lab经典编程例题
以下各题均要求编程实现,并将程序贴在题U下方。1(从键盘输入任意个正 整数,以o结束,输出那些正整数中的素数。
clc;clear;
zzs(l)input ('请输入正整数:*) ;k=l; n=0;%素数个数
while zzs(k)、=O
flag=O;%是否是素数,是则为1
for yz=2:sqrt(zzs(k))%因子从2至此数平方根
if mod(zzs (k), yz)=0
flag=l ;break;%非素数跳出循环
end
end
if flag=O&zzs(k)>l%忽略 0 1 的素数
nn+1;sus(n)=zzs(k);
end
k=k+l;
zzs(k)input ('请输入正整数:');
end
disp(['你共输入了' num2str(k-l)个正整数。它们是:'])disp(zzs(1 :k-
1))%不显示最后一个数0
if n=0
disp('这些数中没有素数〜')%无素数时显示else
dispf其中的素数是:')
disp(sus)
end
2(若某数等于其所有因子(不含这个数本身)的和,则称其为完全数。编程求
10000以内所有的完全数。
clc;clear;
wq二[];%完全数赋空数组
for ii=2:10000
yz=[];%ii的因子赋空数组
for jj=2:ii/2 %从2ii/2考察是否为ii的因子
if mod(ii, jj)=O
yz=[yz jj] ;%因子数组扩展,加上j j
end
end
if ii==sum(yz)+l
wq=[wq ii];%完全数数组扩展,加上ii
end
end
disp([' 10000 以内的完全数为:'num2str(wq)])%输出
3(下列这组数据是美国1900-2000年人口的近似值(单位:口万)。时间t
1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000 人口 y 76 92 106 123 132 151 179 203 227 250 281
2(1)若试编写程序计算出上式中的dbc; yt的经验公式为y, at, bt,
bt(2)若试编写程序计算出上式中的ab; ymatlab 下载t的经验公式为y, ae.
2(3)在一个坐标系下,画出数表中的散点图(红五角星),中y, ax, bx, c bt拟合曲线图(蓝实心线),以及(黑点划线)。y, ae.
(4)图形标注要求:无网格线,横标注“时间t”,纵标注“人口数(白万)”, 图形
标题“美国1900-2000年的人口数据”。
(5)程序中要有注释,将你的程序和作好的图粘贴到这里。clf;clc;clear % 清除图形窗、屏幕、丄作空间
t1900:10:2000;
y[76 92 106 123 132 151 179 203 227 250 281];
plpolyfit (t, y, 2) ;%二次多项式拟合
yl=polyval (pl, t) ;%求拟合多项式函数值•••..,1, %显示拟合多项式及其系 数 a, b, c
disp (char (['y二'poly2str (pl,'t') ], ['a二'num2str (pl (1)) ' ' ' b二' num2str(pl(2))''
'c二'num2str (pl (3))]));・・・..,2, yy=log(y) ;%J8数拟合必需的线性化变形 p2=polyfit(t, yy, 1);%拟合
b=p2(l);a=exp(p2(2));%求出指数拟合中的 a, b
y2=a*exp(b*t) ;%指数拟合函数式
plot (t, y,' rp', t, yl, t, y2,' k-. ') ;%三类数据作图…,3, %图形窗的进一步 设定
grid off;xlabel(,时间 t');ylabel('人口数(百万)');…..,4,    美国
1900—2000年的人口数据');
美国1900—2000年的人口数据
250
200
150人口数(百万)
100
501900*********9301940195019601970198019902000
时间t
4(附加题
某正整数的三次方是四位数,四次方是六位数,四位数和六位数的各位数字正 好是0为这十个数字,求此正整数。
clc;clear;
for ii=10:40%10的三次方是最小四位数,40的四次方超过六位
i3=num2str (ii"3) ; i4=num2str (ii 4) 三四次方均转为字符
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
end