资源描述:
《刘卫国全套配套课件MATLAB程序设计与应用第3版第4章 MATLAB程序流程控制_源程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章MATLAB程序流程控制例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,将会执行该脚本文件。>>exch程序2:首先建立函数文件fexch.m。function[a,b]=exch(a,b)c=a;a=b;b=c;然后在MATLAB的命令行窗口调用该函数文件:>>clear;>>x=1:10
2、;>>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计算分段函数的值。cos(x1)x21,x10yxxx
3、,x10x=input('请输入x的值:');ifx==10y=cos(x+1)+sqrt(x*x+1);elsey=x*sqrt(x+sqrt(x));endy也可以用单分支if语句来实现,程序如下:x=input('请输入x的值:');ifx==10y=cos(x+1)+sqrt(x*x+1);endifx~=10y=x*sqrt(x+sqrt(x));endy第一个if语句可以不用,而直接求函数值即可,改用以下程序实现。x=input('请输入x的值:');y=cos(x+1)+sqrt(x*x+1);ifx~
4、=10y=x*sqrt(x+sqrt(x));endy例4-4输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应数的平方,若为其他字符则原样输出。c=input('请输入一个字符:','s');ifc>='A'&&c<='Z'disp(lower(c))elseifc>='a'&&c<='z'disp(upper(c))elseifc>='0'&&c<='9'disp(str2double(c)^2)elsedisp(c)end例4-5某商场对商品实行打折
5、销售,求其实际销售价格。price=input('请输入商品价格');switchfix(price/100)case{0,1}%价格小于200rate=0;case{2,3,4}%价格大于等于200但小于500rate=3/100;casenum2cell(5:9)%价格大于等于500但小于1000rate=5/100;casenum2cell(10:24)%价格大于等于1000但小于250023rate=8/100;casenum2cell(25:49)%价格大于等于2500但小于5000rate=10/100;o
6、therwise%价格大于等于5000rate=14/100;endprice=price*(1-rate)%输出商品实际销售价格例4-6矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则提示错误信息。A=input('请输入A矩阵:');B=input('请输入B矩阵:');tryC=A*Bcatchlasterrend例4-7输出全部水仙花数。shu=[];%用于存放结果,先赋空值form=100:999m1=fix(m/100);%求m的百位数字m2=rem(fix(m/10),10);%
7、求m的十位数字m3=rem(m,10);%求m的个位数字ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3shu=[shu,m];%存入结果endenddisp(shu)例4-8已知y,当n=100时,求y的值。y=0;n=100;fori=1:ny=y+1/(i*i);endy3π0.5x例4-9设f(x)esin(x),求s=f(x)dx。60程序一:3a=0;b=3*pi;n=1000;h=(b-a)/n;x=a;s=0;f0=exp(-0.5*x)*sin(x+pi/6);fori=1:n
8、x=x+h;%下一个x坐标f1=exp(-0.5*x)*sin(x+pi/6);%求新的函数值s=s+(f0+f1)*h/2;%求小梯形面积并累加f0=f1;%更新函数值ends程序二:a=0;b=3*pi;n=1000;h=(b-a)/n;x=a:h:b;%生成自变量向量xf=exp(-0.5*x).*sin(x+pi/6);%