第4章例题源程序.doc_第1页
第4章例题源程序.doc_第2页
第4章例题源程序.doc_第3页
第4章例题源程序.doc_第4页
第4章例题源程序.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

例4.1 建立一个命令文件将变量a,b的值互换,然后运行该命令文件。 程序1:首先建立命令文件并以文件名exch.m存盘:clear;a=1:10;b=11,12,13,14;15,16,17,18;c=a;a=b;b=c;ab然后在MATLAB的命令窗口中输入exch,将会执行该命令文件。 程序2: 首先建立函数文件fexch.m:function a,b=exch(a,b)c=a;a=b;b=c;然后在MATLAB的命令窗口调用该函数文件:clear;x=1:10;y=11,12,13,14;15,16,17,18;x,y=fexch(x,y) 例4.2 求一元二次方程ax2+bx+c=0的根。a=input(a=?);b=input(b=?);c=input(c=?);d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x2=,num2str(x(2);例4.3 计算分段函数:x=input(请输入x的值:);if x=10 y=cos(x+1)+sqrt(x*x+1);else y=x*sqrt(x+sqrt(x);endy也可以用单分支if语句来实现:x=input(请输入x的值:);y=cos(x+1)+sqrt(x*x+1);if x=10 y=x*sqrt(x+sqrt(x);endy或用以下程序:x=input(请输入x的值:);if x=10 y=cos(x+1)+sqrt(x*x+1);endif x=10 y=x*sqrt(x+sqrt(x);endy 例4.4 输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。c=input(请输入一个字符,s);if c=A & c=a& c=0& c=9 disp(abs(c)-abs(0);else disp(c);end例4.5 某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示): price200 没有折扣 200price500 3%折扣 500price1000 5%折扣 1000price2500 8%折扣 2500price5000 10%折扣5000price 14%折扣输入所售商品的价格,求其实际销售价格。price=input(请输入商品价格);switch fix(price/100) case 0,1 %价格小于200 rate=0; case 2,3,4 %价格大于等于200但小于500 rate=3/100; case num2cell(5:9) %价格大于等于500但小于1000 rate=5/100; case num2cell(10:24) %价格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %价格大于等于2500但小于5000 rate=10/100; otherwise %价格大于等于5000 rate=14/100;endprice=price*(1-rate) %输出商品实际销售价格例4.6 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。A=1,2,3;4,5,6;B=7,8,9;10,11,12;try C=A*B;catch C=A.*B;endClasterr %显示出错原因例4.7 一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。for m=100:999m1=fix(m/100); %求m的百位数字m2=rem(fix(m/10),10); %求m的十位数字m3=rem(m,10); %求m的个位数字if m=m1*m1*m1+m2*m2*m2+m3*m3*m3disp(m)endend 例4.8 已知 ,当n=100时,求y的值。y=0;n=100;for i=1:ny=y+1/i/i;endy 在实际MATLAB编程中,为提高程序的执行速度,常用向量运算来代替循环操作,所以上述程序通常由下面的程序来代替:n=100;i=1:n;f=1./i.2;y=sum(f)赵国荣补充:y=0;i=1;while 1 f=1/i/i; y=y+f; if i=100 break; end i=i+1;endy或:y=0;n=1;while n0) sum mean=sum/nend例4.12 根据矩阵指数的幂级数展开式求矩阵指数。X=input(Enter X:);E=zeros(size(X);F=eye(size(X);n=1;while norm(F,1)0 E=E+F; F=F*X/n; n=n+1;endEexpm(X) %调用MATLAB矩阵指数函数求矩阵指数赵国荣补充程序:X=input(Enter X:);E=zeros(size(X);F=eye(size(X);n=1;while norm(F,1)0 E=E+F; F=X*F/n; n=n+1;endEexpm(X) 例4.13 求100,200之间第一个能被21整除的整数。for n=100:200if rem(n,21)=0 continueendbreakendn赵国荣补充程序:for n=100:200if rem(n,21)=0 breakendendn例4.14 若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求1,500之间的全部完数。例4.15 用筛选法求某自然数范围内的全部素数。 m=input(m=); p=1:m; p(1)=0;for i=2:sqrt(m) for j=2*i:i:m p(j)=0; endendn=find(p=0);p(n) 关于在p中划去i的倍数(不包括i),可利用矩阵运算一步完成,从而得到更为简洁的程序:m=input(m=); p=2:m;for i=2:sqrt(m) n=find(rem(p,i)=0&p=i); p(n)=;endp 例4.16 编写函数文件求半径为r的圆的面积和周长。 函数文件如下: function s,p=fcircle(r)%CIRCLE calculate the area and perimeter of a circle of radii r%r 圆半径%s 圆面积%p 圆周长%2006年2月30日编s=pi*r*r;p=2*pi*r; 将以上函数文件以文件名fcircle.m存盘,然后在MATLAB命令窗口调用该函数:s,p=fcircle(10) 例4.17 利用函数文件,实现直角坐标(x,y)与极坐标(,)之间的转换。 函数文件tran.m:function rho,theta=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x); 调用tran.m的命令文件main1.m: x=input(Please input x=:);y=input(Please input y=:);rho,the=tran(x,y);rhothe赵国荣补充:% tran 直角坐标与极坐标的转换% theta 极角% rho 矢径 例4.18 利用函数的递归调用,求n!。function f=factor(n)if n1 error(RNDPRM1 accepts as inputs only vectors);endY=; %从一个空矩阵开始l=n; %X的元素个数for i=1:nk=1+fix(l*rand); %随机选择Y的下一个元素的位置x=X(k); %被选择的元素 Y=Y,x; %将X添加到Y中 X(k)=; %从X中删除x元素 l=l-1 ; %更新X的元素个数end第二个程序用函数的递归调用:function Y=rndprm2(X)%RNDPRM2 用递归调用产生一个行向量的任意排列%RNDPRM2(X)产生一个X的任意排列m,n=size(X);l=n;if m1 error(RNDPRM2 accepts as inputs only vectors)endif n=1 Y=X;elsek=1+fix(l*rand); %随机选择Y的下一个元素的位置x=X(k); %被选择的元素X(k)=; %从X中删除x元素 Z=rndprm2(X); %将剩下的元素随机排列 Y=Z,x; %构造输出向量 l=l-1;end 例4.20 nargin用法示例。 函数文件examp.m:function fout=charray(a,b,c)if nargin=1 fout=a;elseif nargin=2 fout=a+b;elseif nargin=3 fout=(a*b*c)/2;end 命令文件mydemo.m:x=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论