MATLAB上机实验报告(2)
实验内容:
一、 试用如下几种方法来建立向量,观察结果
(1) x=1:5, x=(1:5)’
实验结果: x=1:5 是行向量,x=(1:5)’是列向量.且1为初始值,5为终止值,默认的步长为1.
>> x=1:5
x =
1 2 3 4 5
>> x=(1:5)'
x =
1
2
3
4
5
(2)x=0:pi/4:pi
实验结果: x=0:pi/4:pi指的是x=(0,0.25*pi,0.50*pi,0.75*pi,pi).其中pi为圆周率,初始值为0,终止值为pi,步长为pi/4.
>> x=0:pi/4:pi
x =
0 0.7854 1.5708 2.3562 3.1416
(3)x=(0:0.2:3)’, y=exp(-x).*sin(x)
实验结果: x的初始值为0,终止值为3,步长为0.2.而函数y表示将x向量中的每一个数代入函数y=e^(-x)*sin(x)得到的函数值组成的向量.
>> x=(0:0.2:3)', y=exp(-x).*sin(x)
x =
0
0.2000
0.4000
0.6000
0.8000
1.0000
1.2000
1.4000
1.6000
1.8000
2.0000
2.2000
2.4000
2.6000
2.8000
3.0000
y =
0
0.1627
0.2610
0.3099
0.3223
0.3096
0.2807
0.2430
0.2018
0.1610
0.1231
0.0896
0.0613
0.0383
0.0204
0.0070
(4)k=linspace(-pi,pi,5), k=logspace(-3,-1,5)
实验结果: k=linspace(-pi,pi,5),产生的是初始值为-pi,终止值为pi,元素总数为5的行向量,即k的步长为pi/2. k=logspace(-3,-1,5)产生的是初始值为10^(-3),终止值为10^(-1),元素总数为5的列向量.其中第n个元素为10^(-3+0.5*n).
>> k=linspace(-pi,pi,5), k=logspace(-3,-1,5)
k =
-3.1416 -1.5708 0 1.5708 3.1416
k =
0.0010 0.0032 0.0100 0.0316 0.1000
二、 已知x=[1 2 3],y=[4 5 6],试计算z=x.*y, x.\y和x./y。
实验结果:直接输入x,y,用分号结束每一行的语句,最后求z.
>> x=1:3;
>> y=4:6;
>> z=x.*y
z =
4 10 18
>> z=x.\y
z =
4.0000 2.5000 2.0000
>> z=x./y
z =
0.2500 0.4000 0.5000
三、 解线性方程
实验结果:假设方程为z*x=y.输入矩阵y,z,则x=z\y.
>> y=[24,96;34,136;36,144;35,140;15,60];
>> z=[5,7,6,5,1;7,10,8,7,2;6,8,10,9,3;5,7,9,10,4;1:5];
>> x=z\y
x =
1.0000 4.0000
1.0000 4.0000
1.0000 4.0000
1.0000 4.0000
1.0000 4.0000
四、 求顶点是A(2,5,6),B(11,3,8),C(5,1,11)的三角形各边的长。
实验结果:输入点A,B,C的坐标,定义向量AB,BC,CA,用norm()计算向量的模,即边长.
>> A=[2,5,6];
>> B=[11,3,8];
>> C=[5,1,11];
>> AB=B-A;
>> BC=C-B;
>> CA=A-C;
>> LAB=norm(AB)
LAB =
9.4340
>> LBC=norm(BC)
LBC =
7
>> LCA=norm(CA)
LCA =
7.0711
五、 进行如下逻辑运算,观察结果。
(1)P=[1 0 0], ~P, P|(~P), P&(~P)
实验结果:
~P为非P,即若P中元素为0,则~P中对应元素为1;若若P中元素为1,则~P中对应元素为0.
|为或,即若P与~P中对应元素中至少一个为1,则其或为1;若两元素均为0,则其或为0.
&为与,即若即若P与~P中对应元素均为1,则其与为1;否则其与为0.
>> P=[1 0 0];
>> ~P
ans =
0 1 1
>> P|(~P)
ans =
1 1 1
>> P&(~P)
ans =
0 0 0
(2)C=rem(P,2), C&P, C|P, (C-1)&P
实验结果:
C=rem(P,2)意为P中的每一个元素对2求余数,若余数为0,则C中对应元素为1;若余数不为0,则C中对应元素为0.则C=(1,0,0).
则C&P=(1,0,0);C|P=(1,0,0).
(C-1)为C中的所有元素均-1,若结果为负数,则输出为0.所以C-1=(0,0,0).
则(C-1)&P=(0,0,0).
>> C=rem(P,2);
>> C&P
ans =
1 0 0
>> C|P
ans =
1 0 0
>> (C-1)&P
ans =
0 0 0
(3)any(P), all(P), all(P|(~P))
实验结果:
any(P)意为若P中有至少一个元素不为0,则输出1;若P中全为0,则输出0.所以any(P)=1.
all(P)意为若P中所有元素非零,输出1;反之输出0. 所以all(P)=0.
P=(1,0,0),~P=(0,1,1),P|(~P)=(1,1,1).则all(P|(~P))=1.
>> any(P)
ans =
1
>> all(P)
ans =
0
>> all(P|(~P))
ans =
1
六、 进行如下关系运算,观察结果。
(1) y=[4 2 1 5 3 0 6]; i=find(y>3.0)
实验结果:
find表示寻找逻辑值的向量元素下标,在此题中,y向量中的元素大于3的有4,5,6,它们的下标分别是1,4,7.所i=(1,4,7).
>> y=[4 2 1 5 3 0 6];
>> i=find(y>3.0)
i =
1 4 7
(2) t=1/0; t==NaN, isnan(t)
实验结果:
定义t=1/0,将t与NaN比较,若t为NaN值,即非数值时返回1,若t不为NaN值,即为数值值时返回0.则isnan(t)=0.
>> t=1/0;
>> t==NaN;
>> isnan(t)
ans =
0
七、 用MATLAB语言实现下面的分段函数
实验结果:
>> x=input('请输入x的值:');
if x>1
y= 1;
elseif -1<=x<=1
y=x;
else
y=-1;
end
y
请输入x的值:7
y =
1
八、 分别用for和while循环语句编写程序,求出
实验结果:
for循环语句:
>> y=0;
>> n=63;
>> for i=0:1:63
y=y+2.^i;
end
>> y
y =
1.8447e+019
while循环语句:
>> y=0;
>> i=0;
>> while i<=63
y=y+2.^i
i=i+1
end
>> y
y =
1.8447e+019
九、 用对分法求解超越方程
实验结果:
>> x1=0;x2=pi;
for I = 1: 32
y1 =log(x1)-cos(x1+pi/4);
y2 =log(x2)-cos(x2+pi/4);
x = 0.5*(x1+x2);
y =log(x)-cos(x+pi/4);
if y*y1>0,x1=x;end
if y*y2>0,x2=x;end
end
>> x
x =
0.8957
实验感想:
本次实验是我做的第二次MATALB实验,相对于上一次实验来说,难度大了不少.因为之前课上讲的内容没有经过实践,基本都忘得差不多了,做实验时又需要重新复习.但是这次实验的内容对于我们其他课程的学习都十分有帮助.并且本次实验中需要使用的if-else,for,while等语句都和C语言语句类似,对于有一定C语言基础的我来说,还算比较熟悉,能较熟练地应用.相信这门课程一定会对我的学习有很大帮助,我会努力学习并熟练掌握MATLAB的使用的.
谢谢老师!
电气工程学院
实 验 报 告
实验项目名称 MATLAB数值计算
所属课程名称 MATLAB及应用
实 验 类 型 上机实验
实 验 日 期 20##-03- 5
指 导 教 师 XXXXXX
班 级 XXXXXXXXX
学 号 XXXXXXXXXX
姓 名 XXXXXXXX
成 绩
一、实验名称
MATLAB数值计算
二、实验目的
(1)掌握MATLAB变量的使用
(2)掌握MATLAB数组的创建
(3)掌握MATLAB数组和矩阵的运算
(4)熟悉MATLAB多项式的运用
三、实验原理
1. 矩阵分析
矩阵转置:单引号(’)
矩阵的旋转:rot90(A,k),功能是将矩阵A旋转90度的k倍,缺省值是1
矩阵的左右翻转:fliplr(A)
矩阵的上下翻转:flipud(A)
矩阵的逆:inv(A),与A^(-1)等价
矩阵的行列式:det(A)
矩阵的秩: rank(A)
矩阵的迹:trace(A)
将矩阵化为最简式:rref(A)
矩阵的特征值与特征向量:(1) E = eig(A);矩阵A的所有特征值构成向量E;(2) [V,D]=eig(A);A的所有特征值构成对角阵D,A的特征向量构成V的列向量;
2. 多项式
多项式的建立:若多的项的全部根构成的向量为X,则以X为根的多项式为poly(X)
多项式的根:roots(p)计算以向量p为系数的多项式的根,包括重根,复根
多项式求值:polyval(p,x),p是多项式的系数,x可以是一个数也可以是一个矩阵
多项式求拟合次数:polyfit(x,y,n),x可以是一个数也可以是一个矩阵,y是x对应的数或矩阵
多项式的四则运算:(1)P1+P2;(2)P1-P2;(3)conv(P1,P2), (4)deconv(P1,P2)
四、实验内容
1. 已知矩阵 11 12 13 14
21 22 23 24
A= 31 32 33 34
41 42 43 44
(1) A(:,1) (2) A(2,:) (3) A(:,2:3)
(4) A(2:3,2:3) (5) A(:,1:2:3) (6) A(2:3)
(7) A(:) (8) A(:,:) (9) ones(2,2)
(10) eye(2) (11) [A,[ones(2,2);eye(2)]] (12) diag(A)
(13) diag(A,1) (14) diag(A,-1) (15) diag(A,2)
2. 已知 .求(1)A的逆;(2)A的行列式;(3)A的迹;
(4)A的所有特征向量和特征值。
3. A=magic(3),B=7*rand(3),计算数组A、B乘积,计算A&B,A|B,~A,A==B,A>B
4. 生成一个4阶Hilbert矩阵H,(1)求H的转置;(2)将H旋转90度;(3)对H实行左右翻转;(4)对H实行上下翻转。
5 输入如下矩阵A
0 p/3
A= p/6 p/2
(1) 求矩阵B1, B1中每一元素为对应矩阵A中每一元素的正弦函数
(2) 求矩阵B2, B2中每一元素为对应矩阵A中每一元素的余弦函数
(3) 求 B12+B22
(4) 求矩阵A的特征值与特征矢量:称特征矢量为M,而特征值矩阵为L
(5) 求Msin(L)M-1
(6)使用funm命令求矩阵A的正弦函数(结果应该与(5)同)
(7)求cosA
(8) 证明 sin2A+cos2A=I
6 某专业有三名研究生,本学期选修了四门课程,若这些研究生的姓名,学号,性别,出生年月,课程名称,考试成绩可任意假定,
(1)分别用结构型变量和细胞型变量表示以上信息;
(2)举例说明查阅以上任何一条信息的方法;
(3)求每一个研究生的平均成绩.
7. 已知多项式,试求:(1)p(x)的根;(2)由其根生成一个多项式q(x)并与p(x)比较;(3)计算p(1.5),p(-2),p(5)的值。
8 已知矩阵A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4],求
(1)A 的特征多项式
(2)特征多项式中未知数为20 时的值
(3)特征多项式的根
(4)特征多项式的导数
9. 在实验中测得如下10组数据:
X 1 2 3 4 5 6 10 12 15 16
Y 7 15 19 30 38 37 23 69 39 28
(1)求最多能拟合多项式的次数是多少?并求出各项系数。
(2)将数据点和拟合曲线在同一图中绘出。
五、实验过程及结果(含源代码)
1、在MATLAB中新建.m文件,输入实验代码如下并保存:
clc,clear
A=[11 12 13 14;21 22 23 24;31 32 33 34;41 42 43 44];
A1=A(:,1)
A2=A(2,:)
A3=A(:,2:3)
A4=A(2:3,2:3)
A5=A(:,1:2:3)
A6=A(2:3)
A7=A(:)
A8=A(:,:)
A9=ones(2,2)
A10=eye(2)
A11=[A,[ones(2,2);eye(2)]]
A12=diag(A)
A13=diag(A,1)
A14=diag(A,-1)
A15=diag(A,2)
点击“run”运行得到结果如下:
A1 =
11
21
31
41
A2 =
21 22 23 24
A3 =
12 13
22 23
32 33
42 43
A4 =
22 23
32 33
A5 =
11 13
21 23
31 33
41 43
A6 =
21 31
A7 =
11
21
31
41
12
22
32
42
13
23
33
43
14
24
34
44
A8 =
11 12 13 14
21 22 23 24
31 32 33 34
41 42 43 44
A9 =
1 1
1 1
A10 =
1 0
0 1
A11 =
11 12 13 14 1 1
21 22 23 24 1 1
31 32 33 34 1 0
41 42 43 44 0 1
A12 =
11
22
33
44
A13 =
12
23
34
A14 =
21
32
43
A15 =
13
24
2、在命令窗口输入代码如下:
A=[2 3 -5 4;-1 2 7 -3;5 -4 2 1;7 6 -2 -3];
inv(A)
ans =
0.0198 0.0010 0.1069 0.0610
0.1199 0.1116 -0.0636 0.0271
0.0709 0.1616 0.0667 -0.0448
0.2388 0.1178 0.0777 -0.1069
det(A)
ans =
-1918
trace(A)
ans =
3
E=eig(A)
E =
-5.6545
4.6888
1.9828 + 8.2711i
1.9828 - 8.2711i
[V,D]=eig(A)
V =
0.3850 0.4655 -0.0889 + 0.4794i -0.0889 - 0.4794i
-0.1196 0.4083 -0.1447 - 0.5624i -0.1447 + 0.5624i
-0.1972 0.4872 0.5903 0.5903
-0.8936 0.6157 -0.1444 + 0.2359i -0.1444 - 0.2359i
D =
-5.6545 0 0 0
0 4.6888 0 0
0 0 1.9828 + 8.2711i 0
0 0 0 1.9828 - 8.2711i
3、在命令窗口键入实验代码如下:
>> A=magic(3),B=7*rand(3)
A =
8 1 6
3 5 7
4 9 2
B =
6.6509 3.4019 3.1953
1.6180 6.2391 0.1295
4.2479 5.3347 5.7499
>> A*B
ans =
80.3126 65.4622 60.1908
57.7778 78.7438 50.4824
49.6611 80.4287 25.4465
>> A&B
ans =
1 1 1
1 1 1
1 1 1
>> A|B
ans =
1 1 1
1 1 1
1 1 1
>> ~A
ans =
0 0 0
0 0 0
0 0 0
>> A==B
ans =
0 0 0
0 0 0
0 0 0
>> A>B
ans =
1 0 1
1 0 1
0 1 0
4、在命令窗口键入实验代码及运行结果如下:
>> H=hilb(4)
H =
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429
>> H'
ans =
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429
>> rot90(H)
ans =
0.2500 0.2000 0.1667 0.1429
0.3333 0.2500 0.2000 0.1667
0.5000 0.3333 0.2500 0.2000
1.0000 0.5000 0.3333 0.2500
>> fliplr(H)
ans =
0.2500 0.3333 0.5000 1.0000
0.2000 0.2500 0.3333 0.5000
0.1667 0.2000 0.2500 0.3333
0.1429 0.1667 0.2000 0.2500
>> flipud(H)
ans =
0.2500 0.2000 0.1667 0.1429
0.3333 0.2500 0.2000 0.1667
0.5000 0.3333 0.2500 0.2000
1.0000 0.5000 0.3333 0.2500
5、在命令窗口键入实验代码及运行结果如下:
>> A=[0 pi/3;pi/6 pi/2]
A =
0 1.0472
0.5236 1.5708
>> B1=sin(A)
B1 =
0 0.8660
0.5000 1.0000
>> B2=cos(A)
B2 =
1.0000 0.5000
0.8660 0.0000
>> B1^2+B2^2
ans =
1.8660 1.3660
1.3660 1.8660
>> [M,L]=eig(A)
M =
-0.9628 -0.4896
0.2703 -0.8719
L =
-0.2940 0
0 1.8648
>> M*sin(L)*inv(M)
ans =
-0.1200 0.6048
0.3024 0.7873
>> funm(A,@sin)
ans =
-0.1200 0.6048
0.3024 0.7873
>> funm(A,@cos)
ans =
0.7873 -0.6048
-0.3024 -0.1200
>> (funm(A,@sin))^2+(funm(A,@cos))^2
ans =
1.0000 -0.0000
-0.0000 1.0000
6、实验代码及运行结果如下:
(1) 分别用细胞型变量和结构型变量表示题示信息如下:
% 细胞型变量
A1={'李明',20130001,'男',19890214,'MATLAB',99,'ENGLISH',88,'Matrix',96,'Math',94};
A2={'张远',20130006,'男',19900425,'MATLAB',98,'ENGLISH',80,'Matrix',90,'Math',96};
A3={'王云',20130009,'女',19901001,'MATLAB',97,'ENGLISH',89,'Matrix',88,'Math',90};
% 结构型变量
B1=struct('Name','李明','StuNumber',20130001,'Sex','男','Birth',19890214,...
'MATLAB',99,'ENGLISH',88,'Matrix',96,'Math',94);
B2=struct('Name','张远','StuNumber', 20130006,'Sex','男','Birth', 19900425,...
'MATLAB',98,'ENGLISH',80,'Matrix',90,'Math',96);
B3=struct('Name','王云','StuNumber', 20130009,'Sex','女','Birth', 19901001,...
'MATLAB',97,'ENGLISH',90,'Matrix',88,'Math',90);
C=[B1 B2 B3];
(2) 查询信息,如查询李明的学号,实验代码如下:
name='李明'
information='StuNumber';
for i=1:3
if strcmp(C(i).Name,name)==1
disp(information);
getfield(C(i),information)
break;
end
end
运行结果如下:
name =
李明
StuNumber
ans =
20130001
(3) 求每位研究生的平均成绩:
for i=1:3
Average(i)=(C(i).MATLAB+C(i).ENGLISH+C(i).Matrix+C(i).Math)/4;
end
Average
结果如下:
Average =
94.2500 91.0000 91.2500
7、在命令窗口键入实验代码及运行结果如下:
>> p=[3 -2 7 9];
>> x=roots(p)
x =
0.7513 + 1.7392i
0.7513 - 1.7392i
-0.8358 + 0.0000i
>> q=poly(x)
q =
1.0000 -0.6667 2.3333 3.0000
>> b=[1.5 -2 5];
>> polyval(p,b)
ans =
25.1250 -37.0000 369.0000
8、在命令窗口键入实验代码及运行结果如下:
>> A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4];
>> p=poly(A);
>> poly2sym(p)
ans =
x^4 - (69*x^3)/10 - (3863*x^2)/50 - (8613*x)/100 + 120##/20
>> polyval(p,20)
ans =
7.2778e+04
>> roots(p)
ans =
13.0527 + 0.0000i
-4.1671 + 1.9663i
-4.1671 - 1.9663i
2.1815 + 0.0000i
>> Dp=polyder(p);
>> poly2sym(Dp)
ans =
4*x^3 - (207*x^2)/10 - (3863*x)/25 - 8613/100
9、因题目给出的实验数据是10组,可以看做是10个多项式方程组,仅当多项式的次数小于方程组的个数时,方程组为超定方程,此时才可以进行最小二乘多项式拟合,因此,最多拟合次数为9次,实验代码及运行结果如下:
X=[1 2 3 4 5 6 10 12 15 16];
Y=[7 15 19 30 38 37 23 69 39 28];
a=polyfit(X,Y,9);
x2=1:0.1:16;
y2=polyval(a,x2);
plot(X,Y,'r*',x2,y2,'b-')
legend('原数据点','拟合曲线')
拟合多项式系数如下:
a =
Columns 1 through 7
0.0000 -0.0005 0.0150 -0.2693 2.9713 -20.5126 85.9563
Columns 8 through 10
-204.4409 250.3796 -107.0989
实验图形如下所示:
六、实验总结
通过本次实验,学会了很多MATLAB知识。如掌握了如何使用MATLAB变量,如何创建MATLAB数组,MATLAB数组和矩阵的运算以及熟悉了MATLAB多项式的运用。学会了运用MATLAB这个强大的工具进行矩阵的分析以及多项式的计算及应用。
实验二实验报告表实验名称学号姓名班级实验时间实验报告表21数值型数据在计算机中的二进制实验记录表说明本实验对计算机内存数据的存放拟…
实验七实验报告表实验名称学号姓名班级实验报告表71网络中实现通信互联的主要设备和其功能实验报告表72域名解析的IP路由通讯的过程实…
实验三实验报告表实验名称字符编码与信息交换学号姓名班级实验时间实验报告表31西文字符显示过程编码记录表实验报告表32汉字显示过程编…
实验八实验报告表实验名称云计算与虚拟服务学号姓名班级实验时间实验报告表81并行算法和串行算法实验数据表实验报告表82分布式实验数据…
实验七实验报告表实验名称学号姓名班级实验时间20xx年月12月2日实验报告表71网络中实现通信互联的主要设备和其功能实验报告表72…
《模拟电子技术实验》集成直流稳压电源设计报告姓名:指导教师:时间:自然班级:(周三晚上7:00-9:00)集成直流稳压电源设计一、…
模拟电子技术研讨报告研讨题目多种波形发生器学院电子信息工程学院班级自动化1204成员焦雍堡12212153黄翔1221215220…
通信系统实验课程研究性学习手册姓名祖健文学号12211189同组成员刘少强指导教师李丞时间20xx年12月一实验任务1实验简介幅度…
53一阶电路黑箱模块的时域测量和辨别学院电子信息工程学院班级自动化1302班姓名学号132120xx实验地点九教南501一实验目的…
BeijingJiaotongUniversity电力系统分析电力系统横向故障分析实验学院班级学号姓名实验2电力系统横向故障分析实…