南华大学《MATLAB及应用》实验报告1.docx
《南华大学《MATLAB及应用》实验报告1.docx》由会员分享,可在线阅读,更多相关《南华大学《MATLAB及应用》实验报告1.docx(19页珍藏版)》请在冰豆网上搜索。
南华大学《MATLAB及应用》实验报告1
核科学技术学院
实验报告
实验项目名称MATLAB数值计算
所属课程名称MATLAB及应用
实验类型上机实验
实验日期2015年12月25日
指导教师
班级
学号
姓名
成绩
一、实验名称
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中新建.m文件,输入实验代码如下并保存:
clc,clear
A=[11121314;21222324;31323334;41424344];
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=
21222324
A3=
1213
2223
3233
4243
A4=
2223
3233
A5=
1113
2123
3133
4143
A6=
2131
A7=
11
21
31
41
12
22
32
42
13
23
33
43
14
24
34
44
A8=
11121314
21222324
31323334
41424344
A9=
11
11
A10=
10
01
A11=
1112131411
2122232411
3132333410
4142434401
A12=
11
22
33
44
A13=
12
23
34
A14=
21
32
43
A15=
13
24
2、在命令窗口输入代码如下:
A=[23-54;-127-3;5-421;76-2-3];
inv(A)
ans=
0.01980.00100.10690.0610
0.11990.1116-0.06360.0271
0.07090.16160.0667-0.0448
0.23880.11780.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.38500.4655-0.0889+0.4794i-0.0889-0.4794i
-0.11960.4083-0.1447-0.5624i-0.1447+0.5624i
-0.19720.48720.59030.5903
-0.89360.6157-0.1444+0.2359i-0.1444-0.2359i
D=
-5.6545000
04.688800
001.9828+8.2711i0
0001.9828-8.2711i
3、在命令窗口键入实验代码如下:
>>A=magic(3),B=7*rand(3)
A=
816
357
492
B=
6.65093.40193.1953
1.61806.23910.1295
4.24795.33475.7499
>>A*B
ans=
80.312665.462260.1908
57.777878.743850.4824
49.661180.428725.4465
>>A&B
ans=
111
111
111
>>A|B
ans=
111
111
111
>>~A
ans=
000
000
000
>>A==B
ans=
000
000
000
>>A>B
ans=
101
101
010
4、在命令窗口键入实验代码及运行结果如下:
>>H=hilb(4)
H=
1.00000.50000.33330.2500
0.50000.33330.25000.2000
0.33330.25000.20000.1667
0.25000.20000.16670.1429
>>H'
ans=
1.00000.50000.33330.2500
0.50000.33330.25000.2000
0.33330.25000.20000.1667
0.25000.20000.16670.1429
>>rot90(H)
ans=
0.25000.20000.16670.1429
0.33330.25000.20000.1667
0.50000.33330.25000.2000
1.00000.50000.33330.2500
>>fliplr(H)
ans=
0.25000.33330.50001.0000
0.20000.25000.33330.5000
0.16670.20000.25000.3333
0.14290.16670.20000.2500
>>flipud(H)
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]
A=
01.0472
0.52361.5708
>>B1=sin(A)
B1=
00.8660
0.50001.0000
>>B2=cos(A)
B2=
1.00000.5000
0.86600.0000
>>B1^2+B2^2
ans=
1.86601.3660
1.36601.8660
>>[M,L]=eig(A)
M=
-0.9628-0.4896
0.2703-0.8719
L=
-0.29400
01.8648
>>M*sin(L)*inv(M)
ans=
-0.12000.6048
0.30240.7873
>>funm(A,@sin)
ans=
-0.12000.6048
0.30240.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.00001.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=[B1B2B3];
(2)查询信息,如查询李明的学号,实验代码如下:
name='李明'
information='StuNumber';
fori=1:
3
ifstrcmp(C(i).Name,name)==1
disp(information);
getfield(C(i),information)
break;
end
end
运行结果如下:
name=
李明
StuNumber
ans=
20130001
(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)
x=
0.7513+1.7392i
0.7513-1.7392i
-0.8358+0.0000i
>>q=poly(x)
q=
1.0000-0.66672.33333.0000
>>b=[1.5-25];
>>polyval(p,b)
ans=
25.1250-37.0000369.0000
8、在命令窗口键入实验代码及运行结果如下:
>>A=[1.2350.9;51.756;3901;1234];
>>p=poly(A);
>>poly2sym(p)
ans=
x^4-(69*x^3)/10-(3863*x^2)/50-(8613*x)/100+12091/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=[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=
Columns1through7
0.0000-0.00050.0150-0.26932.9713-20.512685.9563
Columns8through10
-204.4409250.3796-107.0989
实验图形如下所示:
(此处按题号顺序写上所写的程序语句内容以及matlab中出现的程序运行结果)
六、实验总结
通过本次实验,学会了很多MATLAB知识。
如掌握了如何使用MATLAB变量,如何创建MATLAB数组,MATLAB数组和矩阵的运算以及熟悉了MATLAB多项式的运用。
学会了运用MATLAB这个强大的工具进行矩阵的分析以及多项式的计算及应用。