-
例
4.1
建立一个命令文件将变量
a,b
的值互换,然
后运行该命令文件。
程序
1
:
<
/p>
首先建立命令文件并以文件名
exch.m
存盘:
clear;
a=1:10;
b=[11,12,13,14;15,16,17,18];
c=a;a=b;b=c;
a
b
然后在
MA
TLAB
< br>的命令窗口中输入
exch
,将会执行该命令文件。
p>
程序
2
:
p>
首先建立函数文件
fexch.m
:
function [a,b]=exch(a,b)
c=a;a=b;b=c;
然后在
M
A
TLAB
的命令窗口调用该函数文件:
clear;
x=1:10;
y=[11,12,13,14;15,16,17,18];
[x,y]=fexch(x,y)
例
4.2
求一元二次方程
ax
2
+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=',nu
m2str(x(2))]);
例
4.3
计算分段函数:
2
< br>?
?
cos(
x
?
1)
?
x
< br>?
1,
x
?
10
y
?
?
?
x
x
?
x
,
x
?
p>
10
?
x=input('
请输入
x
的值
:');
if x==10
y=cos(x+1)+sqrt(x*x+1);
else
y=x*sqrt(x+sqrt(x));
end
y
也可以用单分支
if
语句来实现:
x=input('
请输入
x
的值
:');
y=cos(x+1)+sqrt(x*x+1);
if
x~=10
y=x*sqrt(x+sqrt(x));
end
y
或用以下程序:
x=input('
请输入
x
的值
:');
if x==10
y=cos(x+1)+sqrt(x*x+1);
end
if x~=10
y=x*sqrt(x+sqrt(x));
end
y
例
4.4
输入一个字符,若为大写字母,则输出其对应的小写字母;若
为小写字母,则输出其对应的大
写字母;若为数字字符则输出其对应的数值,若为其他字
符则原样输出。
c=input('
请输入一个字符
','s');
if c>='A' &
c<='Z'
disp(setstr(abs(c)+abs('a')-abs('A')));
elseif c>='a'& c<='z'
disp(setstr(abs(c)- abs('a')+abs('A')));
elseif c>='0'& c<='9'
disp(abs(c)-abs('0'));
else
disp(c);
end
例
4.5
某商场对顾客所购买的商品实行打折销售,标准如下
(
商品价格用
price
来表示
< br>)
:
price<200
没有折扣
200≤price<500
3%
折扣
500≤price<1000
5%
折扣
10
00≤price<2500
8%
折扣
2500≤price<5000
10%
折扣
5000≤price
14%
折扣
输入所售商品的价格,求其实际销售价格。
< br>price=input('
请输入商品价格
');
switch fix(price/100)
case {0,1}
%
价格小于
200
rate=0;
case {2,3,4} %<
/p>
价格大于等于
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
但小于
500
0
rate=10/100;
otherwise
%
价格大于等于
5000
rate=14/100;
end
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;
end
C
lasterr
%
显示出错原因
例
4.7
一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。
for m=100:999
m1=fix(m/100); %
求
m
的百位数字
m2=rem(fix(m/10),10); %
求<
/p>
m
的十位数字
m3=rem(m,10); %
求
m
的个位数字
if m==m1*m1*m1+m2*m2*m2+m3*m3*m3
disp(m)
end
end
例
4.8
已知
y
?<
/p>
1
1
1
1
?
?
?
?
?
,当
n=100
时,求
y
的值。
2
2
2
2
1
p>
2
3
n
y=0;n
=100;
for i=1:n
y=y+1/i/i;
end
y
在实际
MATLAB
编程中,为提高程序的执行速度,常用向量运算来
代替循环操作,所以上述程序通
常由下面的程序来代替:
n=100;
i=1:n;
f=1./i.^2;
y=sum(f)
例
4.9
设
f
(
x
p>
)
?
e
?
0
.
5
x
sin(
x
?
?
6
)
,求
s=
?
3
π
0
f
(
x
)
dx
。
a=0;b=3*pi;
n=1000; h=(b-a)/n;
x=a; s=0;
f0=exp(-0.5*x)*sin(x+pi/6);
for i=1:n
x=x+h;
f1=exp(-0.5*x)*sin(x+pi/6);
s=s+(f0+f1)*h/2;
f0=f1;
end
s
上述程序
来源于传统的编程思想。也可以利用向量运算,从而使得程序更加简洁,更赋有
MA
p>
TLAB
的特点。程序如下:
a=0;b=3*pi;
n=1000;
h=(b-a)/n;
x=a:h:b;
f=exp(-0.5*x).*sin(x+pi/6);
for i=1:n
s(i)=
(f(i)+f(i+1))*h/2;
end
s=sum(s)
例
4.10
写出下列程序的执行结果。
s=0;
a=[12,13,14;15,16,17;18,19,20;21,22,23]
;
for k=a
s=s+k;
end
disp(s');
例
4.11
从键盘输入若干个数,当输入
0
时结束
输入,求这些数的平均值和它们之和。
sum=0;
n=0;
x=input('Enter a number
(end in 0):');
while (x~=0)
sum=sum+x;
n=n+1;
x=input('Enter a number (end in 0):');
-
-
-
-
-
-
-
-
-
上一篇:学生圣诞节活动方案20xx正式版
下一篇:2021年有关幼儿园圣诞活动策划方案