第04章-MATLAB程序设计-参考解答

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

高教社刘卫国《MATLAB程序设计与应用》(第二版)习题参考解答第4章:MATLAB程序设计第4章MATLAB程序设计教材P81习题四1.从键盘上输入一个4位整数,按如下规则加密后输出。加密规则:每位数字都加上7,然后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。答:程序设计:clearall;closeall;clc;a=input('请输入一个4位整数:');while(a1000|a9999)a=input('输入错误,不是一个4位整数,请输入一个4位整数:');endb=fix(a/1000);%千位数字(第四位数字)c=rem(fix(a/100),10);%百位数字(第三位数字)d=rem(fix(a/10),10);%十位数字(第二位数字)e=rem(a,10);%个位数字(第一位数字)b=rem(b+7,10);%该位数字加7,然后用和除以10的余数取代该数字c=rem(c+7,10);%该位数字加7,然后用和除以10的余数取代该数字d=rem(d+7,10);%该位数字加7,然后用和除以10的余数取代该数字e=rem(e+7,10);%该位数字加7,然后用和除以10的余数取代该数字g=c;c=e;e=g;%将第一位和第三位交换g=b;b=d;d=g;%将第二位和第四位交换a=1000*b+100*c+10*d+e;%a为加密后的整数disp(['加密后:',num2str(a)])2.分别用if语句和switch语句实现以下计算,其中a,b,c的值从键盘输入。2,0.51.5sin,1.53.5ln,3.55.5caxbxcxyabxxcbxx⎧⎪++≤⎪⎪=+≤⎨⎪⎪+≤⎪⎩答:程序设计:(1)用if语句来实现:clearall;closeall;clc;a=input('请输入a:');b=input('请输入b:');c=input('请输入c:');forx=0.5:1:5.5ifx=0.5&x1.5y=a.*(x.^2)+b.*x+celseifx=1.5&x3.5y=a*(sin(b)^c)+xelseifx=3.5&x5.5王成优©山东大学(威海)MATLAB语言WangChengyou©ShandongUniversity,Weihai1高教社刘卫国《MATLAB程序设计与应用》(第二版)习题参考解答第4章:MATLAB程序设计y=log(abs(b+c./x))endend(2)用switch语句来实现:clearall;closeall;clc;a=input('请输入a:');b=input('请输入b:');c=input('请输入c:');forx=0.5:1:5.5switchfloor(x/0.5)case{1,2}y=a.*(x.^2)+b.*x+c;case{3,4,5,6}y=a*(sin(b)^c)+x;case{7,8,9,10}y=log(abs(b+c./x));enddisp(y)end(3)用逻辑表达式来实现:clearall;closeall;clc;a=input('请输入a:');b=input('请输入b:');c=input('请输入c:');x=0.5:1:5.5;x1=(x=0.5&x1.5);x2=(x=1.5&x3.5);x3=(x=3.5&x5.5);y1=a.*(x.^2)+b.*x+c;y2=a*(sin(b)^c)+x;y3=log(abs(b+c./x));y=y1.*x1+y2.*x2+y3.*x3;disp(y)3.产生20个两位随机整数,输出其中小于平均值的偶数。答:程序设计:clearall;closeall;clc;x=fix(rand(1,20)*89)+10;disp(['20个两位随机数是:',num2str(x)]);x1=mean(x);disp(['平均值为:',num2str(x1)]);n=find(rem(x,2)==0&xx1);disp(['其中小于平均值的偶数是:',num2str(x(n))]);王成优©山东大学(威海)MATLAB语言WangChengyou©ShandongUniversity,Weihai2高教社刘卫国《MATLAB程序设计与应用》(第二版)习题参考解答第4章:MATLAB程序设计4.输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB的max函数、min函数来实现。答:程序设计:(1)用循环结构来实现:clearall;closeall;clc;A=input('请输入20个数的一个行向量(用[]括起来):');a=A(1);b=A(1);form=Aifa=ma=m;elseifb=mb=m;endenddisp(['最小数是:',num2str(a)])disp(['最大数是:',num2str(b)])(2)调用MATLAB的max函数、min函数来实现:clearall;closeall;clc;A=input('请输入20个数的一个行向量(用[]括起来):');maxval=max(A)%maxval为其中最大数minval=min(A)%minval为其中最小数5.已知:23612222s3=+++++分别用循环结构和调用MATLAB的sum函数求的值。s答:程序设计:(1)用循环结构:clearall;closeall;clc;s=0;fora=0:63c=2^a;s=s+c;enddisp(['2的0次方到63次方的和是:',num2str(s)])(2)调用MATLAB的sum函数:clearall;closeall;clc;k=0:63;n=2.^k;s=sum(n);disp(['2的0次方到63次方的和是:',num2str(s)])王成优©山东大学(威海)MATLAB语言WangChengyou©ShandongUniversity,Weihai3高教社刘卫国《MATLAB程序设计与应用》(第二版)习题参考解答第4章:MATLAB程序设计6.当n分别取100、1000、10000时,求下列各式的值。(1)111111(1)234nn+−+−++−+=(ln2)(2)111π1(3574−+−+=)(3)11111()4166443n+++++=(4)224466(2)(2)π133557(21)(21)2nnnn⎛⎞×××⎛⎞⎛⎞⎛⎞⎛=⎜⎟⎜⎟⎜⎟⎜⎟⎜×××−+⎝⎠⎝⎠⎝⎠⎝⎝⎠⎞⎟⎠要求分别用循环结构和向量运算(使用sum或prod函数)来实现。答:(1)程序设计:clearall;closeall;clc;sum1=0;%当n取100时forn=1:100x=(-1)^(n+1)*(1/n);sum1=sum1+x;enddisp(['当n取100时:sum=',num2str(sum1)])sum2=0;%当n取1000时forn=1:1000x=(-1)^(n+1)*(1/n);sum2=sum2+x;enddisp(['当n取1000时:sum=',num2str(sum2)])sum3=0;%当n取10000时forn=1:10000x=(-1)^(n+1)*(1/n);sum3=sum3+x;enddisp(['当n取10000时:sum=',num2str(sum3)])(2)程序设计:clearall;closeall;clc;sum1=0;%当n取100时n1=0;forn=1:2:100x=(-1)^n1*(1/n);sum1=sum1+x;n1=n1+1;end王成优©山东大学(威海)MATLAB语言WangChengyou©ShandongUniversity,Weihai4高教社刘卫国《MATLAB程序设计与应用》(第二版)习题参考解答第4章:MATLAB程序设计disp(['当n取100时:sum=',num2str(sum1)])sum2=0;%当n取1000时n2=0;forn=1:2:1000x=(-1)^n2*(1/n);sum2=sum2+x;n2=n2+1;enddisp(['当n取1000时:sum=',num2str(sum2)])sum3=0;%当n取10000时n3=0;forn=1:2:10000x=(-1)^n3*(1/n);sum3=sum3+x;n3=n3+1;enddisp(['当n取10000时:sum=',num2str(sum3)])(3)程序设计:clearall;closeall;clc;sum1=0;%当n取100时forn=1:100x=1/(4^n);sum1=sum1+x;enddisp(['当n取100时:sum=',num2str(sum1)])sum2=0;%当n取1000时forn=1:1000x=1/(4^n);sum2=sum2+x;enddisp(['当n取1000时:sum=',num2str(sum2)])sum3=0;%当n取10000时forn=1:10000x=1/(4^n);sum3=sum3+x;enddisp(['当n取10000时:sum=',num2str(sum3)])(4)程序设计:clearall;closeall;clc;王成优©山东大学(威海)MATLAB语言WangChengyou©ShandongUniversity,Weihai5高教社刘卫国《MATLAB程序设计与应用》(第二版)习题参考解答第4章:MATLAB程序设计sum1=1;%当n取100时forn=1:100x=4*n*n/(2*n-1)/(2*n+1);sum1=sum1*x;enddisp(['当n取100时:sum=',num2str(sum1)])sum2=1;%当n取1000时forn=1:1000x=4*n*n/(2*n-1)/(2*n+1);sum2=sum2*x;enddisp(['当n取1000时:sum=',num2str(sum2)])sum3=1;%当n取10000时forn=1:10000x=4*n*n/(2*n-1)/(2*n+1);sum3=sum3*x;enddisp(['当n取10000时:sum=',num2str(sum3)])7.编写一个函数文件,求小于任意自然数n的斐波那契(Fibnacci)数列各项。斐波那契数列定义如下:12121,11,2,2nnnfnfnfffn−−==⎧⎪==⎨⎪=+⎩答:程序设计:函数文件func_fibnacci.m:functionf=func_fibnacci(n)%FIBNACCI斐波那契(Fibnacci)数列%f=func_fibnacci(n),n为项数,f为Fibnacci数列%WrittenbyWangChengyou@ShandongUniversityatWeihai,2011ifn==1|n==2f=1;elsef=func_fibnacci(n-1)+func_fibnacci(n-2);end命令文件ex0407.m:clearall;closeall;clc;sequence=[];n=input('请输入一个自然数n:');fork=1:nsequence=[sequencefunc_fibnacci(k)];王成优©山东大学(威海)MATLAB语言WangChengyou©ShandongUniversity,Weihai6高教社刘卫国《MATLAB程序设计与应用》(第二版)习题参考解答第4章:MATLAB程序设计enddisp('Fibnacci数列为:')disp(sequence)8.编写一个函数文件,用于求两个矩阵的乘积和点乘,然后在命令文件中调用该函数。答:程序设计:函数文件func_MatrixProd.m:function[f1,f2]=func_MatrixProd(x1,x2)%MATRIXPROD矩阵乘法:包括矩阵乘积和矩阵点积%[

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功