好文档 - 专业文书写作范文服务资料分享网站

matlab第三章课后部分答案

天下 分享 时间: 加入收藏 我要投稿 点赞

习题三

3-2 从键盘输入一个三位整数,将它反向输出。如输入639,输出为936 程序如下:

m=input('请输入一个三位整数:'); m1=fix(m/100);%求m的百位整数

m2=rem(fix(m/10),10);%求m的十位数字 m3=rem(m,10);%求m的个位数字 m=m3*100+m2*10+m1%反向输出m 3-3 输入一个百分制成绩,要求输出成绩等级A,B,C,D,E。其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。 要求:(1)分别用if语句和switch语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 程序如下: (1)if语句

c=input('请输入成绩:'); if c>=90&c<=100 disp('A 成绩合理'); elseif c>=80&c<=89

disp('B 成绩合理'); elseif c>=70&c<=79 disp('C 成绩合理'); elseif c>=60&c<=69 disp('D 成绩合理'); elseif c<60

disp('E 成绩合理'); else

disp('成绩错误'); end

(2)switch语句

c=input('请输入成绩:'); switch fix(c)

case num2cell(90:100) disp('A 成绩合理'); case num2cell(80:89) disp('B 成绩合理'); case num2cell(70:79) disp('C 成绩合理'); case num2cell(60:69) disp('D 成绩合理'); case num2cell(0:59) disp('E 成绩合理'); otherwise

disp('成绩错误'); end

3-4 建立5*6矩阵,要求输出矩阵第N行元素。当N值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。 程序如下: clear all

a=fix(rand(5,6)*89)+10;

n=input('请输入行数n(输出结果是5*6矩阵的元素):'); if n>5|n<0 b=a(5:5,:);

disp(['输入行数错误,程序输出最后一行:',num2str(b)]) else

c=a(n:n,:);

disp(['输出结果为:',num2str(c)]) end

3-5 产生20个两位随机整数,输出其中小于平均值的偶数。 程序如下:

x=fix(rand(1,20)*89)+10; x1=fix(sum(x)/20);

disp(['平均数是: ',num2str(x1)]) m=(rem(x,2)==0&x

disp(['小于平均数的数是: ',num2str(x(n))]);

3-6 输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB的max函数、min函数来实现。 程序如下: 主函数

c=input('请输入20个数:') disp('最大值是:') m=max(c)

disp('最小值是:') n=min(c)

max函数

function m=max(a[]) m=a(1,20); for i=2:20

if m>a(1,i) m=a(1,i) end end

min函数

function n=min(a[]) m=a(1,20); for i=2:20

if n

end end

3-8 当n分别取100、1000、10000时,求下列各式的值: (1)1/1^2+1/2^2+1/3^2+···+1/n^2+···(=pi^2/6)

程序如下: clear all n=1:100; b=1./(n.*n); c=sum(b);

disp(['当n等于100时: ',num2str(c)]) n=1:1000; b=1./(n.*n); c=sum(b);

disp(['当n等于1000时: ',num2str(c)]) n=1:10000; b=1./(n.*n); c=sum(b);

disp(['当n等于10000时: ',num2str(c)]) 结果:>> 当n等于100时:

当n等于1000时: 当n等于10000时: (2) 1-1/3+1/5-1/7+···(=pi/4)

程序如下: clear all n=1:100;

b=1./(4.*n-3)-1./(4.*n-1); c=sum(b);

disp(['当n等于100时: ',num2str(c)]) n=1:1000;

b=1./(4.*n-3)-1./(4.*n-1); c=sum(b);

disp(['当n等于1000时: ',num2str(c)]) n=1:10000;

b=1./(4.*n-3)-1./(4.*n-1); c=sum(b);

disp(['当n等于10000时: ',num2str(c)]) 结果:>> 当n等于100时:

当n等于1000时: 当n等于10000时: (3)1/4+1/16+1/64+···+1/4^n+···(=1/3)

程序如下: clear all n=1:100; b=1./(4.^n);

c=sum(b);

disp(['当n等于100时: ',num2str(c)]) n=1:1000; b=1./(4.^n); c=sum(b);

disp(['当n等于1000时: ',num2str(c)]) n=1:10000; b=1./(4.^n); c=sum(b);

disp(['当n等于10000时: ',num2str(c)]) 结果:>> 当n等于100时:

当n等于1000时: 当n等于10000时:

(4)···((2n)(2n)/(2n-1)(2n+1))···(=pi/2)

程序如下: clear all n=1:100;

b=((2*n).*(2*n))./((2*n-1).*(2*n+1)); c=prod(b);

disp(['当n等于100时: ',num2str(c)]) n=1:1000;

b=((2*n).*(2*n))./((2*n-1).*(2*n+1)); c=prod(b);

disp(['当n等于1000时: ',num2str(c)]) n=1:10000;

b=((2*n).*(2*n))./((2*n-1).*(2*n+1)); c=prod(b);

disp(['当n等于10000时: ',num2str(c)])

结果:>> 当n等于100时:

当n等于1000时: 当n等于10000时:

3-9若两个连续自然数的乘积减1是素数,则称这两个连续自然数是亲密数对,该素数是亲密素数。例如,2*3-1=5,由于5是素数,所以2和3是亲密数对,5是亲密素数。求[2,50]区间内:

(1)亲密数对的对数。

(2)与上述亲密数对对应的所有亲密素数之和。 程序如下: clear all p=0; l=0; H=[];

for m=2:49 a=m; b=m+1;

c=a*b-1; for k=1:c

if rem(c,k)==0 l=l+1; end end if l==2

disp(['亲密数对是','(',num2str(a),',',num2str(b),')']) p=p+1; H=[H,c]; end l=0; end

sum=sum(H);

disp(['亲密数对的个数是:',num2str(p)]) disp(['亲密数对的和是: ',num2str(sum)]) 3-10 根据y=1+1/3+1/5+···+1/(2n-1),求: (1)y<3时的最大n值。

(2)与(1)的n值对应的y值。 程序如下:sum=0;

for n=1:100

sum=sum+1/(2*n-1);

if sum>3&(sum-1/(2*n-1))<3 disp(n-1)

disp(sum-1/(2*n-1)) end end

方法2 clear all n=1; y=0;

while(y<3)

x=1/(2*n-1); n=1+n; y=y+x; end

disp(['y<3时n的最大值是: ',num2str(n-2)]) disp(['相应的y值是: ',num2str(y-x)])

3-12 编写一个函数文件,用于求两个矩阵的乘积和点乘,然后在命令文件中调用该函数。 程序如下:

mul函数 %用于求两个矩阵的乘积和点乘 function [x,y]=mul(a,b) x=a*b; y=a.*b;

main%主函数

a=input('请输入一个矩阵:'); b=input('请再输入一个矩阵:(注意:两矩阵要可以相乘)'); [x,y]=mull(a,b);

disp('这两个矩阵的乘积为:'); x

disp('这两个矩阵的点乘为:'); y

3-14 先用函数的递归调用定义一个函数文件求∑I,然后调用该函数文件求∑k+∑k^2+∑1/k 程序如下:

定义一个求和函数: function sum=add(n,m) if n<1

sum=0; else

sum=n^m+add(n-1,m); end

主函数: clear all

y=add(100,1)+add(50,2)+add(10,-1); disp(y)

精心搜集整理,只为你的需要

matlab第三章课后部分答案

习题三3-2从键盘输入一个三位整数,将它反向输出。如输入639,输出为936程序如下:m=input('请输入一个三位整数:');m1=fix(m/100);%求m的百位整数m2=rem(fix(m/10),10);%求m的十位数字m3=rem(m,10);%求m的个位数字m=m3*100+m2*10+m1%反向输出m
推荐度:
点击下载文档文档为doc格式
0ft3k1hnmc6x2111f20r4n7xz5ee5l00bn3
领取福利

微信扫码领取福利

微信扫码分享