南华大学《MATLAB及应用》实验报告1.docx
《南华大学《MATLAB及应用》实验报告1.docx》由会员分享,可在线阅读,更多相关《南华大学《MATLAB及应用》实验报告1.docx(20页珍藏版)》请在冰豆网上搜索。
南华大学《MATLAB及应用》实验报告1
核科学技术学院
实验报告
实验项目名称MATLAB数值计算
所属课程名称MATLAB及应用
实验类型上机实验
实验日期2015年12月日
指导教师谢芹
班级
学号
姓名
成绩
一、实验名称
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.已知矩阵 11121314
21222324
A=31323334
41424344
(1)如何输出A的第1列?
(2)如何输出A的第2行?
(3)如何输出A的第2列和第3列?
(4)要得到
,怎么办?
(5)如何输出A的第1列和第3列?
(6)如何将21和31按一列输出?
(7)如何将A所有元素按从最左列至最右列新排列为一列输出?
(8)如何将A原阵输出?
(9)如何输出2阶全1阵?
(10)如何输出2阶单位阵?
(11)试用分块矩阵的方法生成阵
1112131411
2122232411
3132333410
4142434401
(12)求A的主对角线
(13)求除去A阵第1列后新阵的主对角线
(14)求除去A阵第1行后新阵的主对角线
(15)求除去A阵从左到右前2列后新阵的主对角线
(16)要分别单独输出A阵元素11、22、33、44,怎么办?
(17)如何将11、31、12、32、13、33、14、34按顺序一行输出?
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如何生成一个三阶幻方、3阶随机阵、1行2列全零阵、3行4列全一阵、3阶单位阵?
4.生成一个4阶Hilbert矩阵H,
(1)求H的转置;
(2)将H旋转90度;(3)对H实行左右翻转;(4)对H实行上下翻转。
5输入如下矩阵A
0 π/3
A=π/6π/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=II是全1阵
6某专业有三名研究生,本学期选修了四门课程,若这些研究生的姓名,学号,性别,出生年月,课程名称,考试成绩可任意假定,
(1)分别用结构型变量和细胞型变量表示以上信息;
(2)举例说明查阅以上任何一条信息的方法;
(3)求每一个研究生的平均成绩.
7.已知多项式
,试求:
(1)p(x)的根;
(2)由其根生成一个多项式q(x)并与p(x)比较;(3)计算p(1.5),p(-2),p(5)的值。
8已知矩阵A=[1.2350.9;51.756;3901;1234],求
(1)A的特征多项式
(2)特征多项式中未知数为20时的值
(3)特征多项式的根
(4)特征多项式的导数
9.在实验中测得如下10组数据:
X12345610121516
Y7151930383723693928
(1)求最多能拟合多项式的次数是多少?
并求出各项系数。
(2)将数据点和拟合曲线在同一图中绘出。
五、实验过程及结果(含源代码)
1、
Matlab程序:
A=[11121314;21222324;31323334;41424344]
A=A(:
1)
A=A(2,:
)
A=A(:
2:
3)
A=A(2:
3,2:
3)
A=A(:
1:
2:
3)
A=A(2:
3,1)
A=A(:
)
A=A(:
:
)
A=ones(2,2)
A=eye
(2)
A=[A,[ones(2,2);eye
(2)]]
A=diag(A)
A=diag(A,1)
A=diag(A,-1)
A=diag(A,2)
A=diag(A)
B=[A(1,1)A(1,3)A(2,1)A(2,3)A(3,1)A(3,3)A(4,1)A(4,3)]
运行结果:
A=
11121314
21222324
31323334
41424344
A=
11
21
31
41
A=
21222324
A=
1213
2223
3233
4243
A=
2223
3233
A=
1113
2123
3133
4143
A=
21
31
A=
11
21
31
41
12
22
32
42
13
23
33
43
14
24
34
44
A=
11121314
21222324
31323334
41424344
A=
11
11
A=
10
01
A=
1112131411
2122232411
3132333410
4142434401
A=
11
22
33
44
A=
12
23
34
A=
21
32
43
A=
13
24
A=
11
22
33
44
B=
1113212331334143
2、
Matlab程序:
A=[23-54;-127-3;5-421;76-2-3]
inv(A)
det(A)
trace(A)
E=eig(A)
[V,D]=eig(A)
运行结果:
A=
23-54
-127-3
5-421
76-2-3
ans=
0.01980.00100.10690.0610
0.11990.1116-0.06360.0271
0.07090.16160.0667-0.0448
0.23880.11780.0777-0.1069
ans=
-1.9180e+03
ans=
3
E=
-5.6545+0.0000i
4.6888+0.0000i
1.9828+8.2711i
1.9828-8.2711i
V=
0.3850+0.0000i0.4655+0.0000i-0.0889+0.4794i-0.0889-0.4794i
-0.1196+0.0000i0.4083+0.0000i-0.1447-0.5624i-0.1447+0.5624i
-0.1972+0.0000i0.4872+0.0000i0.5903+0.0000i0.5903+0.0000i
-0.8936+0.0000i0.6157+0.0000i-0.1444+0.2359i-0.1444-0.2359i
D=
-5.6545+0.0000i0.0000+0.0000i0.0000+0.0000i0.0000+0.0000i
0.0000+0.0000i4.6888+0.0000i0.0000+0.0000i0.0000+0.0000i
0.0000+0.0000i0.0000+0.0000i1.9828+8.2711i0.0000+0.0000i
0.0000+0.0000i0.0000+0.0000i0.0000+0.0000i1.9828-8.2711i
3、
Matlab程序:
A=magic(3)
B=7*rand(3)
A*B
A&B
A|B
~A
A==B
A>B
运行结果;
A=
816
357
492
B=
5.70316.39361.9495
6.34054.42653.8282
0.88890.68286.7025
ans=
57.298559.672359.6394
55.034346.092971.9072
81.655066.778755.6566
ans=
111
111
111
ans=
111
111
111
ans=
000
000
000
ans=
000
000
000
ans=
101
011
110
三阶幻方magic(3)
三阶随机rand(3)
一行两列零矩阵zeros(1,2)
三行四列全一矩阵ones(3,4)
三阶单位矩阵eye(3)
运行结果:
ans=
816
357
492
ans=
0.96490.95720.1419
0.15760.48540.4218
0.97060.80030.9157
ans=
00
ans=
1111
1111
1111
ans=
100
010
001
4、
Matlab程序:
H=hilb(4)
H'
rot90(H)
fliplr(H)
flipud(H)
运行结果:
H=
1.00000.50000.33330.2500
0.50000.33330.25000.2000
0.33330.25000.20000.1667
0.25000.20000.16670.1429
ans=
1.00000.50000.33330.2500
0.50000.33330.25000.2000
0.33330.25000.20000.1667
0.25000.20000.16670.1429
ans=
0.25000.20000.16670.1429
0.33330.25000.20000.1667
0.50000.33330.25000.2000
1.00000.50000.33330.2500
ans=
0.25000.33330.50001.0000
0.20000.25000.33330.5000
0.16670.20000.25000.3333
0.14290.16670.20000.2500
ans=
0.25000.20000.16670.1429
0.33330.25000.20000.1667
0.50000.33330.25000.2000
1.00000.50000.33330.2500
5、
A=[0pi/3;pi/6pi/2]
B1=sin(A)
B2=cos(A)
B1^2+B2^2
[M,L]=eig(A)
M*sin(L)*inv(M)
funm(A,‘sin’)
funm(A,’cos‘)
(funm(A,‘sin’))^2+(funm(A,’cos’))^2
运行结果:
A=
01.0472
0.52361.5708
B1=
00.8660
0.50001.0000
B2=
1.00000.5000
0.86600.0000
ans=
1.86601.3660
1.36601.8660
M=
-0.9628-0.4896
0.2703-0.8719
L=
-0.29400
01.8648
ans=
-0.12000.6048
0.30240.7873
ans=
-0.12000.6048
0.30240.7873
ans=
0.7873-0.6048
-0.3024-0.1200
ans=
1.0000-0.0000
-0.00001.0000
6、
(1)
%细胞型变量
A1={'鲁明',20140001,'男',19950214,'MATLAB',99,'ENGLISH',88,'Matrix',96,'Math',94};
A2={'钱旭',20140006,'男',19950425,'MATLAB',98,'ENGLISH',80,'Matrix',90,'Math',96};
A3={'肖蝴',20140009,'女',19951001,'MATLAB',97,'ENGLISH',89,'Matrix',88,'Math',90};
%结构型变量
B1=struct('Name','鲁明','StuNumber',20140001,'Sex','男','Birth',19950214,...
'MATLAB',99,'ENGLISH',88,'Matrix',96,'Math',94);
B2=struct('Name','钱旭','StuNumber',20140006,'Sex','男','Birth',19950425,...
'MATLAB',98,'ENGLISH',80,'Matrix',90,'Math',96);
B3=struct('Name','肖蝴','StuNumber',20140009,'Sex','女','Birth',19951001,...
'MATLAB',97,'ENGLISH',90,'Matrix',88,'Math',90);
C=[B1B2B3];
(2)
例如查询生日:
Matlab程序如下:
name='鲁明'
information='Birth';
fori=1:
3
ifstrcmp(C(i).Name,name)==1
disp(information);
getfield(C(i),information)
break;
end
end
运行结果:
name=
鲁明
Birth
ans=
19950214
(3)求研究生平均成绩
程序如下:
fori=1:
3
Average(i)=(C(i).MATLAB+C(i).ENGLISH+C(i).Matrix+C(i).Math)/4;
end
Average
运行结果:
Average=
94.250091.000091.2500
7、
p=[3-279];
x=roots(p)
q=poly(x)
b=[1.5-25];
polyval(p,b)
运行结果:
x=
0.7513+1.7392i
0.7513-1.7392i
-0.8358+0.0000i
q=
1.0000-0.66672.33333.0000
ans=
25.1250-37.0000369.0000
8、
A=[1.2350.9;51.756;3901;1234];
p=poly(A);
poly2sym(p)
polyval(p,20)
roots(p)
Dp=polyder(p);
poly2sym(Dp)
运行结果:
ans=
x^4-(69*x^3)/10-(3863*x^2)/50-(8613*x)/100+12091/20
ans=
7.2778e+04
ans=
13.0527+0.0000i
-4.1671+1.9663i
-4.1671-1.9663i
2.1815+0.0000i
ans=
4*x^3-(207*x^2)/10-(3863*x)/25-8613/100
9、因题目给出的实验数据是10组,可以看做是10个多项式方程组,仅当多项式的次数小于方程组的个数时,方程组为超定方程,此时才可以进行最小二乘多项式拟合,因此,最多拟合次数为9次。
Matlab程序如下;
X=[12345610121516];
Y=[7151930383723693928];
a=polyfit(X,Y,9);
x2=1:
0.1:
16;
y2=polyval(a,x2);
plot(X,Y,'r*',x2,y2,'b-')
legend('原数据点','拟合曲线')
[a,s]=polyfit(x2,y2,9)
运行结果:
a=
Columns1through7
0.0000-0.00050.0150-0.26932.9713-20.512685.9563
Columns8through10
-204.4409250.3796-107.0989
s=
R:
[10x10double]
df:
141
normr:
5.4090e-09
得到的拟合曲线图像:
(此处按题号顺序写上所写的程序语句内容以及matlab中出现的程序运行结果)
六、实验总结