MATLAB运算基础实验19.docx
《MATLAB运算基础实验19.docx》由会员分享,可在线阅读,更多相关《MATLAB运算基础实验19.docx(45页珍藏版)》请在冰点文库上搜索。
![MATLAB运算基础实验19.docx](https://file1.bingdoc.com/fileroot1/2023-7/7/728d0d61-1de4-4e44-9df3-db808fadd901/728d0d61-1de4-4e44-9df3-db808fadd9011.gif)
MATLAB运算基础实验19
实验一MATLAB运算基础
一、实验目的
1、熟悉启动和退出MATLAB的方法。
2、熟悉MATLAB命令窗口的组成。
3、掌握建立矩阵的方法。
4、掌握MATLAB各种表达式的书写规则以及常用函数的使用。
二、实验仪器
安装有matlab6.0软件的计算机一台
三、实验内容
1.先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。
(1)
(2)
,其中
(3)
提示:
利用冒号表达式生成a向量,求各点的函数值时用点乘运算。
其中
提示:
用逻辑表达式求分段函数值。
2.已知:
求下列表达式的值:
和
(其中I为单位矩阵)
(5)
3.设有矩阵
求他们的乘积C。
将矩阵C的右下角3X2子矩阵赋给D。
查看MATLAB工作空间的使用情况。
完成下列操作:
(1)求
之间能被21整除的数的个数。
提示:
先利用冒号表达式,再利用find和length函数。
(2)建立一个字符串向量,删除其中的大写字母。
提示:
利用find函数和空矩阵。
4、实验源程序、结果与分析
%题1
源程序
z1=2*sin(85*pi/180)/(1+exp
(2))%用正弦函数sin与自然指数exp求z1的值
x=[21+2i;-0.455];%求矩阵x
z2=1*log(x+sqrt(1+x*x))/2%用log自然对数函数与sqrt平方根函数求z2
a=-3.0:
0.1:
3.0;%用冒号表达式求a
z3=(exp(0.3.*a)-exp(-0.3.*a))/2.*sin((a+0.3)*pi/180)+log((0.3+a)/2)%用自然指数exp、正弦函数sin、自然对数函数log求z3
t=0:
0.5:
2.5;%用冒号表达式求t
q1=(t>=0&t<1).*t;%用逻辑表达式求临时变量q1
z41=q1.*q1%用临时变量q1求z41
q2=(t>=1&t<2).*t;%用逻辑表达式求临时变量q2
z42=q2.*q2-1%用临时变量q2求z42
q3=(t>=2&t<3).*t;%用逻辑表达式求临时变量q3
z43=q3.*q3-2*t+1%用临时变量q3求z43
结果与分析
z1=0.2375
z2=0.7114-0.0253i0.8968+0.3658i
0.2139+0.9343i1.1541-0.0044i
z3=Columns1through10
0.3485+3.1416i0.3070+3.1416i0.2642+3.1416i0.2201+3.1416i0.1743+3.1416i0.1269+3.1416i0.0775+3.1416i0.0260+3.1416i-0.0278+3.1416i-0.0842+3.1416i
Columns11through20
-0.1436+3.1416i-0.2064+3.1416i-0.2728+3.1416i-0.3437+3.1416i-0.4195+3.1416i-0.5011+3.1416i-0.5895+3.1416i-0.6862+3.1416i-0.7927+3.1416i-0.9116+3.1416i
Columns21through30
-1.0461+3.1416i-1.2011+3.1416i-1.3842+3.1416i-1.6080+3.1416i-1.8962+3.1416i-2.3021+3.1416i-2.9955+3.1416i-37.0245-2.9958-2.3027
Columns31through40
-1.8971-1.6092-1.3858-1.2030-1.0484-0.9142-0.7957-0.6895-0.5932-0.5051
Columns41through50
-0.4239-0.3485-0.2781-0.2120-0.1497-0.0907-0.03480.01860.06960.1184
Columns51through60
0.16530.21050.25410.29620.33700.37660.41520.45260.48920.5249
Column610.5599
z41=0.25000000
z42=-1.0000-1.000001.2500-1.0000-1.0000
z43=1.00000-1.0000-2.00001.00002.2500
%题2
源程序
A=[12,34,-4;34,7,87;3,65,7];%求矩阵A
B=[1,3,-1;2,0,3;3,-2,7];%求矩阵B
C1=A+6*B
I=eye(3)%生成单位矩阵I
C2=A-B+I,C3=A*B,C4=A.*B,C5=A^3,C6=A.^3,C7=A/B,C8=A\B,C9=[A,B]
C10=[A([1,3],:
);B^2]
结果与分析
C1=1852-10
467105
215349
I=100
010
001
C2=1231-3
32884
0671
C3=684462
309-72596
154-5241
C4=121024
680261
9-13049
C5=3722623382448604
247370149188600766
78688454142118820
C6=172839304-64
39304343658503
27274625343
C7=16.4000-13.60007.6000
35.8000-76.200050.2000
67.0000-134.000068.0000
C8=-0.03130.3029-0.3324
0.0442-0.03230.1063
0.0317-0.11580.1558
C9=1234-413-1
34787203
36573-27
C10=1234-4
3657
451
11019
20-540
%题3
源程序
A=[12345;678910;1112131415;1617181920;2122232425];%求矩阵A
B=[3016;17-69;023-4;970;41311];%求矩阵B
C=A*B,D=C(3:
5,1:
2)%生成C的右下角3*2子矩阵赋给D
结果与分析
C=9315077D=423520
258335237588705
423520397753890
588705557
753890717
%题4
源程序
%
(1)
x=100:
1:
999;%生产100到999之间的整数
p=rem(x,21)==0;%判断X的元素是否可被21整除
l=find(p>0);%求x的元素中被21整除的位置
l1=length(l)%求x的元素中被21整除的个数
%
(2)
s='abcdefGHJKLlopq'%生产字符串s
g=find(s>='A'&s<='Z');%找大写字母的位置
s(g)=[]%删除大写字母
结果与分析
l1=43
s=abcdefGHJKLlopq
s=
abcdeflopq
实验二MATLAB矩阵分析与处理
一、实验目的
1、掌握生成特殊矩阵的方法。
2、掌握矩阵分析的方法。
3、用矩阵求逆法解线性方程组。
1、实验仪器
安装有matlab6.0软件的计算机一台
2、实验内容
1.设有分块矩阵
其中E、R、O、S分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证
。
2.产生5阶希尔伯特矩阵
和5阶帕斯卡矩阵
,且求其行列式的值Th和Tp以及它们的条件数Th和Tp,判断哪个矩阵性能更好。
为什么?
3.建立一个5x5矩阵,求它们的行列式值、迹、秩和范数。
4.已知
求
的特征值及特征向量,并分析其数学意义。
5.下面是一个线性方程组:
求方程的解。
将方程右边向量元素b3改为0.53,再求解,并比较b3的变化和解的相对变化。
计算系数矩阵
的条件数并分析结论。
6.建立A矩阵,试比较sqrtm(A)和sqrt(A),分析它们的区别。
4、实验源程序、结果与分析
E=eye(3)%3*3单位矩阵R=rand(3,2)%3*2的随机矩阵
O=zeros(2,3)%2*3零矩阵S=diag([1,2])%对角阵
A=[E,R;O,S]%分块矩阵AY1=A*A%等号左边的值
Y2=[E,R+R*S;O,S*S]%等号的右边的值Y=Y1-Y2%验证等式成立
E=100R=231/1160529/1860
010538/1801587/1251
001211/319552/8521
O=000S=10
00002
A=100231/1160529/1860
010538/1801587/1251
001211/319552/8521
00010
00002
Y1=100231/580529/620
0101076/1801587/417
001422/319481/2475
00010
00004
Y2=100231/580529/620
0101076/1801587/417
001422/319481/2475
00010
00004
Y=00000
00000
00000
00000
00000
题2
源程序
formatrat%有理式形式输出
H=hilb(5)%5阶希尔伯特矩阵
P=pascal(5)%产生5阶帕斯卡矩阵
Hh=det(H)%求5阶希尔伯特矩阵H的行列式的值
Hp=det(P)%求5阶帕斯卡矩阵P的行列式的值
Th=cond(H)%求5阶希尔伯特矩阵H条件式的值
Tp=cond(P)%求5阶帕斯卡矩阵P条件式的值
%矩阵P的条件数比矩阵H的条件数更接近1,所以矩阵P的性能要好于矩阵H
结果与分析
H=11/21/31/41/5
1/21/31/41/51/6
1/31/41/51/61/7
1/41/51/61/71/8
1/51/61/71/81/9
P=11111
12345
1361015
14102035
15153570
Hh=1/266716800000
Hp=1
Th=476607
Tp=178868/21
题4
源程序
%
(1)
A=rand(5,5)%产生5*5的矩阵
r1=det(A)%求行列式的数值
r2=rank(A)%求矩阵的秩
r3=trace(A)%求矩阵的迹
r4=norm(A,1)%求A的1-范数
r5=norm(A)%求A的2-范数
r6=norm(A,inf)%求A的无穷-范数
%
(2)
A=[-29,6,18;20,5,12;-8,8,5]%产生矩阵
B=eig(A)%求A的特征值
[V,D]=eig(A)%求的特征向量
[V,D]=eig(A,'nobalance')
结果与分析
A=932/943913/21091119/1747160/347187/3720
359/616559/2474355/16981352/2381643/1548
1204/2843781/1347335/8821509/19001141/3741
997/1934917/12062791/3563223/3768863/987
180/5391288/24312737/40201723/2858237/15790
r1=-560/8919r2=5
r3=3073/1842r4=529/186
r5=1287/515r6=413/138
A=-29618B=-3595/142
20512-3755/357
-8854697/279
V=698/979395/1409989/3619
-859/1412-2430/3089349/400
538/1543423/769578/1427
D=-3595/14200
0-3755/3570
004697/279
V=1361/1013493/1574
-1227/1438-11
290/593551/788331/713
D=-3595/14200
0-3755/3570
004697/279
%题5
源程序
A=[1/21/31/4;1/31/41/5;1/41/51/6];%产生矩阵A
b1=[0.950.670.52]';%产生矩阵b的秩
x1=inv(A)*b1%求方程的解
b2=[0.950.670.53]';%产生矩阵修改后b的秩
x2=inv(A)*b2%求方程的解
C=cond(A)
结果分析
x1=6/5
3/5
3/5
x2=3
-33/5
33/533/5
C=9473/7
%题6
源程序
A=[42;36];%产生矩阵A
B1=sqrtm(A)%求sqrtm(A)
B2=sqrt(A)%求sqrt(A)
结果与分析
B1=1018/531728/1565
1092/15651751/735
B2=21393/985
1351/7802158/881
实验三选择结构程序设计
一、实验目的
1、掌握建立和执行M文件的方法。
2、掌握利用if语句实现选择结构的方法。
3、掌握利用switch语句实现多分支选择结构的方法。
4、掌握try语句的使用。
二、实验仪器
安装有matlab6.0软件的计算机一台
三、实验内容
1.求分段函数的值。
用if语句实现,分别输出
时的
值。
2.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。
其中90分~100分为A,80分~89分为B,70分~79分为C,60分~69分为D,60分以下为E。
要求:
分别用if语句和switch语句实现。
输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
3.硅谷公司员工的工资计算方法如下:
(1)工作时数超过120小时者,超过部分加发15%。
(2)工作时数低于60小时者,扣发700元。
(3)其余按每小时84元计发。
试编程按输入的工号和该号员工的工时数,计算应发工资。
4.设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,并显示相应的结果。
5.建立5x6矩阵,要求输出矩阵第n行元素。
当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。
四、实验源程序、结果与分析
%题1
源程序
x=input('请输入x的值');
ifx<0&x~=-3%求当x<0&x~=-3时y的值
y=x*x+x-6;
elseifx>=0&x<5&x~=2&x~=3%求当x>=0&x<5&x~=2&x~=3时y的值
y=x*x-5*x+6;
elsey=x*x-x-1;%求x为其他值时y的值
end
y
结果与分析
请输入x的值1
y=2
%题2
源程序
%
(1)if语句的实现
g=input('请输入成绩g');
ifg>=90&g<=100%求成绩g>=90&g<=100时的成绩等级
disp('成绩等级:
A');
elseifg>=80&g<=89%求成绩g>=80&g<=89时的成绩等级
disp('成绩等级:
B');
elseifg>=70&g<=79%求成绩g>=70&g<=79时的成绩等级
disp('成绩等级:
C');
elseifg>=60&g<=69%求成绩g>=60&g<=69时的成绩等级
disp('成绩等级:
D');
elseifg<60&g>=0%求成绩g<60&g>=0时的成绩等级
disp('成绩等级:
E');
elsedisp('请输入合理的成绩!
');
end
%
(1)switch语句的实现
g1=input('请输入成绩g1');
switch(g1/10)
case{9,10}%求成绩g>=90&g<=100时的成绩等级
disp('成绩等级:
A');
case(8)%求成绩g>=80&g<=89时的成绩等级
disp('成绩等级:
B');
case(7)%求成绩g>=70&g<=79时的成绩等级
disp('成绩等级:
C');
case(6)%求成绩g>=60&g<=69时的成绩等级
disp('成绩等级:
D');
case{0,1,2,3,4,5}%求成绩g<60&g>=0时的成绩等级
disp('成绩等级:
E');
Otherwisedisp('请输入合理的成绩!
');
end
结果与分析
请输入成绩g90成绩等级:
A
请输入成绩g180成绩等级:
B
%题3
源程序
gh=input('请输入工号gh'),gs=input('请输入工时gs');
ifgs>120%求工时超过120小时的工资
gz=120*84+(gs-120)*(1+0.15)*84
elseifgs<60%求工时低于60小时的工资
gz=gs*84-700
elsegz=gs*84%求工时为其他值的工资
end
结果与分析
请输入工号gh2007请输入工时gs60
gz=5040
%题4
源程序
r1=fix(rand
(1)*89+10)%求随机数r1
r2=fix(rand
(1)*89+10)%求随机数r2
c=input('请输入运算符号:
','s');
switch(c)
case('*')
jg=r1*r2
case('/')
jg=r1/r2
case('+')
jg=r1+r2
case('-')
jg=r1-r2
otherwisedisp('请输入正确的运算符号!
');
end
结果与分析
r1=78
r2=96
请输入运算符号:
+
jg=174
%题5
A=[123456;789101112;131415161718;192021222324;252627282930],n=input('请输入行号n:
');
ifn>5
A(5,:
)%求n值超过矩阵行数时输出矩阵最后一行元素
disp('请输入1到5的行号!
')
elseA(n,:
)%求第n行的元素
end
结果与分析
A=123456
789101112
131415161718
192021222324
252627282930
请输入行号n:
4
ans=192021222324
实验四循环结构程序设计
一、实验目的
1.掌握利用for语句实现循环结构的方法。
2.掌握利用while语句实现循环结构的方法。
3.熟悉利用向量运算来代替循环操作的方法。
二、实验仪器
安装有matlab6.0软件的计算机一台
三、实验内容
1.根据
求的进似值。
当n分别取100、1000、10000时,结果是多少?
要求:
分别用循环结构和向量运算(使用sum函数)来实现。
2.已知
求
中:
最大值、最小值、各数之和。
正数、零、负数的个数。
四、实验源程序、结果与分析
%题1
源程序
(1)%用循环结构实现
n=input('请输入n的值:
');
y=0;
fori=1:
n%使用for循环语句求pi的平方
y=y+1/i/i;
end
jg1=sqrt(6*y)%用函数sqrt求pi的值
(2)%用向量运算实现
n1=input('请输入n1的值:
');
i=1:
n1;
y1=1./i.^2;
jg2=sqrt(6*sum(y1))%用函数sum求pi的值
结果与分析
请输入n的值:
100请输入n1的值:
100
jg1=166/53jg2=166/53
请输入n的值:
1000请输入n1的值:
1000
jg1=3841/1223jg2=3841/1223
请输入n的值:
10000请输入n1的值:
10000
jg1=2309/735jg2=2309/735
%题4
源程序
f
(1)=1,f
(2)=0,f(3)=1,Max=f
(1),Min=f
(1),zs=0,zero=0,fs=0,s=0
fori=4:
100
f(i)=f(i-1)-2*f(i-2)+f(i-3);%使用循环语句求f(i)的值
s=s+f(i);%求f(i)的和s
end
fori=1:
100
ifMaxMax=f(i);%使用循环语句求最大值
end
ifMin>f(i)
Min=f(i);%使用循环语句求最值小值
end
iff(i)>0
zs=zs+1;%使用循环语句求正数的个数
end
iff(i)<0
fs=fs+1;%使用循环语句求负数的个数
end
iff(i)==0
zero=zero+1;%使用循环语句求零的个数
end
end
disp('最大值'),Max
disp('最小值'),Min