第04章MATLAB程序设计例题源程序Word文件下载.docx
- 文档编号:19235609
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:11
- 大小:29.97KB
第04章MATLAB程序设计例题源程序Word文件下载.docx
《第04章MATLAB程序设计例题源程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《第04章MATLAB程序设计例题源程序Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
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的值:
ifx==10
y=cos(x+1)+sqrt(x*x+1);
else
y=x*sqrt(x+sqrt(x));
end
y
也可以用单分支if语句来实现:
y=cos(x+1)+sqrt(x*x+1);
ifx~=10
或用以下程序:
例4.4输入一个字符,若为大写字母,则输出其对应的小写字母;
若为小写字母,则输出其对应的大写字母;
若为数字字符则输出其对应的数值,若为其他字符则原样输出。
请输入一个字符'
'
s'
ifc>
='
A'
&
c<
Z'
disp(setstr(abs(c)+abs('
a'
)-abs('
)));
elseifc>
&
z'
disp(setstr(abs(c)-abs('
)+abs('
0'
9'
disp(abs(c)-abs('
));
disp(c);
例4.5某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):
price<
200没有折扣
200≤price<
5003%折扣
500≤price<
10005%折扣
1000≤price<
25008%折扣
2500≤price<
500010%折扣
5000≤price14%折扣
输入所售商品的价格,求其实际销售价格。
price=input('
请输入商品价格'
switchfix(price/100)
case{0,1}%价格小于200
rate=0;
case{2,3,4}%价格大于等于200但小于500
rate=3/100;
casenum2cell(5:
9)%价格大于等于500但小于1000
rate=5/100;
casenum2cell(10:
24)%价格大于等于1000但小于2500
rate=8/100;
casenum2cell(25:
49)%价格大于等于2500但小于5000
rate=10/100;
otherwise%价格大于等于5000
rate=14/100;
price=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;
C
lasterr%显示出错原因
例4.7一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。
输出全部水仙花数。
form=100:
999
m1=fix(m/100);
%求m的百位数字
m2=rem(fix(m/10),10);
%求m的十位数字
m3=rem(m,10);
%求m的个位数字
ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3
disp(m)
例4.8已知
,当n=100时,求y的值。
y=0;
n=100;
fori=1:
n
y=y+1/i/i;
在实际MATLAB编程中,为提高程序的执行速度,常用向量运算来代替循环操作,所以上述程序通常由下面的程序来代替:
n=100;
i=1:
n;
f=1./i.^2;
y=sum(f)
例4.9设
,求s=
。
a=0;
b=3*pi;
n=1000;
h=(b-a)/n;
x=a;
s=0;
f0=exp(-0.5*x)*sin(x+pi/6);
x=x+h;
f1=exp(-0.5*x)*sin(x+pi/6);
s=s+(f0+f1)*h/2;
f0=f1;
s
上述程序来源于传统的编程思想。
也可以利用向量运算,从而使得程序更加简洁,更赋有MATLAB的特点。
程序如下:
x=a:
h:
b;
f=exp(-0.5*x).*sin(x+pi/6);
s(i)=(f(i)+f(i+1))*h/2;
s=sum(s)
例4.10写出下列程序的执行结果。
s=0;
a=[12,13,14;
15,16,17;
18,19,20;
21,22,23];
fork=a
s=s+k;
disp(s'
例4.11从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。
sum=0;
n=0;
Enteranumber(endin0):
while(x~=0)
sum=sum+x;
n=n+1;
x=input('
if(n>
0)
sum
mean=sum/n
例4.12根据矩阵指数的幂级数展开式求矩阵指数。
X=input('
EnterX:
E=zeros(size(X));
F=eye(size(X));
n=1;
whilenorm(F,1)>
E=E+F;
F=F*X/n;
E
expm(X)%调用MATLAB矩阵指数函数求矩阵指数
例4.13求[100,200]之间第一个能被21整除的整数。
forn=100:
200
ifrem(n,21)~=0
continue
break
例4.14若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。
求[1,500]之间的全部完数。
例4.15用筛选法求某自然数范围内的全部素数。
m=input('
m='
p=1:
m;
p
(1)=0;
fori=2:
sqrt(m)
forj=2*i:
i:
m
p(j)=0;
end
n=find(p~=0);
p(n)
关于在p中划去i的倍数(不包括i),可利用矩阵运算一步完成,从而得到更为简洁的程序:
m=input('
p=2:
n=find(rem(p,i)==0&
p~=i);
p(n)=[];
p
例4.16编写函数文件求半径为r的圆的面积和周长。
函数文件如下:
function[s,p]=fcircle(r)
%CIRCLEcalculatetheareaandperimeterofacircleofradiir
%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:
Pleaseinputx=:
y=input('
Pleaseinputy=:
[rho,the]=tran(x,y);
rho
the
例4.18利用函数的递归调用,求n!
functionf=factor(n)
ifn<
=1
f=1;
f=factor(n-1)*n;
%递归调用求(n-1)!
在命令文件main2.m中调用函数文件factor.m求s=1!
+2!
+3!
+4!
+5!
5
s=s+factor(i);
例4.19任意排列问题。
MATLAB提供的函数randperm(n),可以产生一个从整数1到整数n的任意排列。
编写一个函数来实现randperm(n)函数的功能,即给出一个由任意数组成的行向量,然后产生这个行向量元素的任意排列。
functionY=rndprm1(X)
%RNDPRM1用for循环产生一个行向量的任意排列
%RNDPRM1(X)产生行向量X的任意排列
[m,n]=size(X);
ifm>
1
error('
RNDPRM1acceptsasinputsonlyvectors'
Y=[];
%从一个空矩阵开始
l=n;
%X的元素个数
k=1+fix(l*rand);
%随机选择Y的下一个元素的位置
x=X(k);
%被选择的元素
Y=[Y,x];
%将X添加到Y中
X(k)=[];
%从X中删除x元素
l=l-1;
%更新X的元素个数
第二个程序用函数的递归调用:
functionY=rndprm2(X)
%RNDPRM2用递归调用产生一个行向量的任意排列
%RNDPRM2(X)产生一个X的任意排列
RNDPRM2acceptsasinputsonlyvectors'
)
Y=X;
X(k)=[];
Z=rndprm2(X);
%将剩下的元素随机排列
Y=[Z,x];
%构造输出向量
例4.20nargin用法示例。
函数文件examp.m:
functionfout=charray(a,b,c)
ifnargin==1
fout=a;
elseifnargin==2
fout=a+b;
elseifnargin==3
fout=(a*b*c)/2;
命令文件mydemo.m:
x=[1:
3];
y=[1;
2;
examp(x)
examp(x,y'
examp(x,y,3)
例4.21全局变量应用示例。
先建立函数文件wadd.m,该函数将输入的参数加权相加。
functionf=wadd(x,y)
globalALPHABETA
f=ALPHA*x+BETA*y;
在命令窗口中输入:
ALPHA=1;
BETA=2;
s=wadd(1,2)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 04 MATLAB 程序设计 例题 源程序