资源描述
实验1 Matlab初步
一、 问题
已知矩阵A、B、b如下:
应用Matlab软件进行矩阵输入及各种基本运算。
二、 实验目的
学会使用Matlab软件构作已知矩阵对应的行(列)向量组、子矩阵及扩展矩阵,实施矩阵的初等变换及线性无关向量组的正交规范化,确定线性相关相关向量组的一个极大线性无关向量组,且将其余向量用极大线性无关向量组线性表示,并能编辑M文件来完成所有的实验目的。
三、 预备知识
1、 线性代数中的矩阵及其初等变换、向量组的线性相关性等知识。
2、 Matlab软件的相关命令提示如下;
(1) 选择A的第i行做一个行向量:ai=A(i,:);
(2) 选择A的第j行做一个列向量:ai=A(j,:);
(3) 选择A的某几行、某几列上的交叉元素做A的子矩阵:A([行号],[列号]);
(4) n阶单位阵:eye(n);n阶零矩阵:zeros(n);
(5) 做一个n维以0或1为元素的索引向量L,然后取A(:,L),L中值为1的对应的列将被取到。
(6) 将非奇异矩阵A正交规范化,orth(A) ;验证矩阵A是否为正交阵,只需做A*A'看是否得到单位阵E。
(7) 两个行向量a1和a2的内积:a1*a2'。
(8) 让A的第i行与第j列互换可用赋值语句:A([i,j],:)=A([j,i],:);
(9) 让K乘以A的第i行可用赋值语句:A(i,:)=K*A(i,:);
(10) 让A的第i行加上第j行的K倍可用赋值语句:A(i,:)=A(i,:)+K*A(j,:);
(11) 求列向量组的A的一个极大线性无关向量组可用命令:rref(A)将A化成阶梯形行的最简形式,其中单位向量对应的列向量即为极大线性无关向量组所含的向量,其它列向量的坐标即为其对应向量用极大线性无关组线性表示的系数。
四、实验的内容与要求
1、请在 MATLAB 直接输入下列常数,看它们的值是多少:
a i
b j
c eps
d inf
e nan
f pi
g realmax
h realmin
>> i
ans = 0 + 1.0000i
>> j
ans = 0 + 1.0000i
>> eps
ans = 2.2204e-016
>> inf
ans = Inf
>> nan
ans = NaN
>> pi
ans = 3.1416
>> realmax
ans = 1.7977e+308
>> realmin
ans = 2.2251e-308
2、MATLAB 的 sqrt 指令可对任一数值进行开平方的运算。用此指令求出下列各数的平方根,并验算之:
a) 1-ip
b) 2*i
c) -5+12*i
其中 i 是单位虚数。
a)>> sqrt(1-i)
ans = 1.0987 - 0.4551i
>> ans^2
ans = 1.0000 - 1.0000i
b)>> sqrt(2*i)
ans = 1.0000 + 1.0000i
>> ans^2
ans = 0 + 2.0000i
c)>> sqrt(-5+12*i)
ans = 2.0000 + 3.0000i
>> ans^2
ans = -5.0000 +12.0000i
3、 输入矩阵A、B
作出A的行向量组:a1,a2,a3,a4,a5,a6。
>> A=[3,4,-1,1,-9,10;6,5,0,7,4,-16;1,-4,7,-1,6,-8;2,-4,5,-6,12,-8;-3,6,-7,8,-1,1;8,-4,9,1,3,0]
A =
3 4 -1 1 -9 10
6 5 0 7 4 -16
1 -4 7 -1 6 -8
2 -4 5 -6 12 -8
-3 6 -7 8 -1 1
8 -4 9 1 3 0
>> a1=A(1,:)
a2=A(2,:)
a3=A(3,:)
a4=A(4,:)
a5=A(5,:)
a6=A(6,:)
a1 = 3 4 -1 1 -9 10
a2 = 6 5 0 7 4 -16
a3 = 1 -4 7 -1 6 -8
a4 = 2 -4 5 -6 12 -8
a5 = -3 6 -7 8 -1 1
a6 = 8 -4 9 1 3 0
1、 作出B的列向量组:b1,b2,b3,b4,b5,b6。
>> B=[1 2 4 6 -3 2;7 9 16 -5 8 -7;8 11 20 1 5 5;10 15 28 13 -1 9;12 19 36 25 -7 23;2 4 6 -3 0 5]
B =
1 2 4 6 -3 2
7 9 16 -5 8 -7
8 11 20 1 5 5
10 15 28 13 -1 9
12 19 36 25 -7 23
2 4 6 -3 0 5
>> b1=B(:,1)
b2=B(:,2)
b3=B(:,3)
b4=B(:,4)
b5=B(:,5)
b6=B(:,6)
b1 =
1
7
8
10
12
2
b2 =
2
9
11
15
19
4
b3 =
4
16
20
28
36
6
b4 =
6
-5
1
13
25
-3
b5 =
-3
8
5
-1
-7
0
b6 =
2
-7
5
9
23
5
2、 由A的一、三、四行和二、三、五列交叉点上的元素作出子矩阵A3。
>> A3=A([1,3,4],[2,3,5])
A3 =
4 -1 -9
-4 7 6
-4 5 12
3、 做一个12阶矩阵A4其分块形式为A4=。
>> A4=[A,eye(6);zeros(6),B]
A4 =
3 4 -1 1 -9 10 1 0 0 0 0 0
6 5 0 7 4 -16 0 1 0 0 0 0
1 -4 7 -1 6 -8 0 0 1 0 0 0
2 -4 5 -6 12 -8 0 0 0 1 0 0
-3 6 -7 8 -1 1 0 0 0 0 1 0
8 -4 9 1 3 0 0 0 0 0 0 1
0 0 0 0 0 0 1 2 4 6 -3 2
0 0 0 0 0 0 7 9 16 -5 8 -7
0 0 0 0 0 0 8 11 20 1 5 5
0 0 0 0 0 0 10 15 28 13 -1 9
0 0 0 0 0 0 12 19 36 25 -7 23
0 0 0 0 0 0 2 4 6 -3 0 5
4、 由索引向量L产生取A的第二、四、五行所成的子矩阵A5。
将A的对应的行向量组正交规范为正交向量组A6,并验证所得的结果。
>> L=[2,4,5];
A5=A(L,:)
A5 =
6 5 0 7 4 -16
2 -4 5 -6 12 -8
-3 6 -7 8 -1 1
>> A
L=[0,0,0,0,0,0;1,1,1,1,1,1;0,0,0,0,0,0;1,1,1,1,1,1;1,1,1,1,1,1;0,0,0,0,0,0]
A5=reshape(A(find(L)),3,6)
A =
3 4 -1 1 -9 10
6 5 0 7 4 -16
1 -4 7 -1 6 -8
2 -4 5 -6 12 -8
-3 6 -7 8 -1 1
8 -4 9 1 3 0
L =
0 0 0 0 0 0
1 1 1 1 1 1
0 0 0 0 0 0
1 1 1 1 1 1
1 1 1 1 1 1
0 0 0 0 0 0
A5 =
6 5 0 7 4 -16
2 -4 5 -6 12 -8
-3 6 -7 8 -1 1
>> A6=orth(A)
A6 =
0.4418 0.0803 -0.5152 0.2589 0.3516 0.5851
-0.4496 -0.7388 -0.3591 0.3326 0.0847 -0.0734
-0.4356 0.1080 -0.0313 -0.0864 -0.5803 0.6734
-0.5509 0.2315 0.2774 -0.0630 0.7145 0.2270
0.2176 -0.5383 0.1238 -0.7469 0.1450 0.2620
-0.2492 0.3046 -0.7158 -0.5031 0.0318 -0.2804
>> A6*A6'
ans =
1.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000
0.0000 1.0000 0.0000 -0.0000 0.0000 0.0000
-0.0000 0.0000 1.0000 0.0000 -0.0000 0.0000
0.0000 -0.0000 0.0000 1.0000 -0.0000 0.0000
-0.0000 0.0000 -0.0000 -0.0000 1.0000 -0.0000
0.0000 0.0000 0.0000 0.0000 -0.0000 1.0000
5、 求a1与a2的内积A7。
>> A7 =a1*a2'
A7 =
-151
完成以下初等变换:将A的第一、四行互换,再将其第三列乘以6,再将其第一行的10倍加至第五行。
>> A
A =
3 4 -1 1 -9 10
6 5 0 7 4 -16
1 -4 7 -1 6 -8
2 -4 5 -6 12 -8
-3 6 -7 8 -1 1
8 -4 9 1 3 0
>> A([1,4],:)=A([4,1],:)
A =
2 -4 5 -6 12 -8
6 5 0 7 4 -16
1 -4 7 -1 6 -8
3 4 -1 1 -9 10
-3 6 -7 8 -1 1
8 -4 9 1 3 0
>> A(:,3)=6*A(:,3)
A =
2 -4 30 -6 12 -8
6 5 0 7 4 -16
1 -4 42 -1 6 -8
3 4 -6 1 -9 10
-3 6 -42 8 -1 1
8 -4 54 1 3 0
>> A(5,:)=10*A(1,:)+A(5,:)
A =
2 -4 30 -6 12 -8
6 5 0 7 4 -16
1 -4 42 -1 6 -8
3 4 -6 1 -9 10
17 -34 258 -52 119 -79
8 -4 54 1 3 0
6、 求B的列向量的一个极大线性无关向量组A9,并将其余的向量用极大线性无关向量组线性表示。
>> B2=rref(B)
B2 =
1.0000 0 0 -6.8000 6.2000 0
0 1.0000 0 -8.6000 1.4000 0
0 0 1.0000 7.5000 -3.0000 0
0 0 0 0 0 1.0000
0 0 0 0 0 0
0 0 0 0 0 0
>> A9=B2(:,[1,2,3,6])
A9 =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 0
0 0 0 0
>> b4=B2(:,4)
b5=B2(:,5)
b4 =
-6.8000
-8.6000
7.5000
0
0
0
b5 =
6.2000
1.4000
-3.0000
0
0
0
第四列表示为
>> A9\b4
ans =
-6.8000
-8.6000
7.5000
0
第五列表示为
>> A9\b5
ans =
6.2000
1.4000
-3.0000
0
4、对矩阵A进行下列操作(如不清楚指令可用命令lookfor 查找)
a) 找出矩阵的大小(即行维数和列维数)
>> size(A)
ans =
6 6
b) 改变矩阵的大小(例如将 4×6 的矩阵改成 12×2)
>> reshape(A,3,12)
ans =
3 2 4 -4 -1 5 1 -6 -9 12 10 -8
6 -3 5 6 0 -7 7 8 4 -1 -16 1
1 8 -4 -4 7 9 -1 1 6 3 -8 0
c) 将矩阵左右翻转(Left-right flip)
>> A
A =
3 4 -1 1 -9 10
6 5 0 7 4 -16
1 -4 7 -1 6 -8
2 -4 5 -6 12 -8
-3 6 -7 8 -1 1
8 -4 9 1 3 0
>> fliplr(A)
ans =
10 -9 1 -1 4 3
-16 4 7 0 5 6
-8 6 -1 7 -4 1
-8 12 -6 5 -4 2
1 -1 8 -7 6 -3
0 3 1 9 -4 8
d) 将矩阵上下翻转(Up-down flip)
>> A
A =
3 4 -1 1 -9 10
6 5 0 7 4 -16
1 -4 7 -1 6 -8
2 -4 5 -6 12 -8
-3 6 -7 8 -1 1
8 -4 9 1 3 0
>> flipud(A)
ans =
8 -4 9 1 3 0
-3 6 -7 8 -1 1
2 -4 5 -6 12 -8
1 -4 7 -1 6 -8
6 5 0 7 4 -16
3 4 -1 1 -9 10
e) 找出矩阵每一列的最大值
>> A
A =
3 4 -1 1 -9 10
6 5 0 7 4 -16
1 -4 7 -1 6 -8
2 -4 5 -6 12 -8
-3 6 -7 8 -1 1
8 -4 9 1 3 0
>> max(A)
ans =
8 6 9 8 12 10
f) 对矩阵的每一列进行排序
>> sort(A,1)
ans =
-3 -4 -7 -6 -9 -16
1 -4 -1 -1 -1 -8
2 -4 0 1 3 -8
3 4 5 1 4 0
6 5 7 7 6 1
8 6 9 8 12 10
g) 矩阵的旋转(Rotate)
>> A
A =
3 4 -1 1 -9 10
6 5 0 7 4 -16
1 -4 7 -1 6 -8
2 -4 5 -6 12 -8
-3 6 -7 8 -1 1
8 -4 9 1 3 0
>> rot90(A)
ans =
10 -16 -8 -8 1 0
-9 4 6 12 -1 3
1 7 -1 -6 8 1
-1 0 7 5 -7 9
4 5 -4 -4 6 -4
3 6 1 2 -3 8
h) 逆矩阵(Inverse matrix)的计算
>> inv(A)
ans =
-0.0737 0.0604 -0.2297 0.0067 -0.0804 0.1042
0.3142 0.0036 0.2408 0.1605 0.1259 -0.1436
0.2099 -0.0395 0.3155 0.0364 0.0834 -0.0663
-0.0827 -0.0123 0.0088 -0.0777 0.0779 0.0878
0.0134 -0.0335 -0.0159 0.1129 0.1061 0.0337
0.0377 -0.0525 -0.0110 0.0469 0.0698 0.0411
l) 求矩阵的 rank
>> A
A =
3 4 -1 1 -9 10
6 5 0 7 4 -16
1 -4 7 -1 6 -8
2 -4 5 -6 12 -8
-3 6 -7 8 -1 1
8 -4 9 1 3 0
>> rank(A)
ans =
6
j) 计算矩阵的 reduced row echelon form
>> rref(A)
ans =
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
k) 计算矩阵的 null space
>> B
B =
1 2 4 6 -3 2
7 9 16 -5 8 -7
8 11 20 1 5 5
10 15 28 13 -1 9
12 19 36 25 -7 23
2 4 6 -3 0 5
>> null(B)
ans =
-0.7152 0.6047
-0.4573 -0.7204
0.5223 0.2181
-0.0419 -0.1213
0.0694 -0.2306
0.0000 -0.0000
m) 计算矩阵的特征值(Eigenvalues)与特征向量(Eigenvectors )
特征值
>> eig(A)
ans =
-13.5086
-6.9440
4.8091 + 2.8454i
4.8091 - 2.8454i
11.6384
7.1961
V为特征向量矩阵 A为特征值矩阵
>> [V,D]=eig(A)
V =
-0.3433 -0.0482 -0.3852 - 0.2652i -0.3852 + 0.2652i -0.3857 -0.5708
-0.0006 0.5904 0.4581 - 0.2938i 0.4581 + 0.2938i 0.6987 0.3629
0.2273 0.0917 0.5483 0.5483 0.2057 0.4898
0.7799 -0.6787 0.0766 - 0.0528i 0.0766 + 0.0528i 0.2613 0.3645
-0.4614 0.3646 -0.0421 - 0.2658i -0.0421 + 0.2658i 0.4585 0.4119
0.0964 0.2169 -0.1683 - 0.2740i -0.1683 + 0.2740i -0.2056 -0.0014
D =
-13.5086 0 0 0 0 0
0 -6.9440 0 0 0 0
0 0 4.8091 + 2.8454i 0 0 0
0 0 0 4.8091 - 2.8454i 0 0
0 0 0 0 11.6384 0
0 0 0 0 0 7.1961
n) 计算矩阵的 QR 分解(QR Decomposition)
>> A
A =
3 4 -1 1 -9 10
6 5 0 7 4 -16
1 -4 7 -1 6 -8
2 -4 5 -6 12 -8
-3 6 -7 8 -1 1
8 -4 9 1 3 0
>> [Q,R]=qr(A)
Q =
-0.2705 -0.4067 -0.1940 -0.6409 -0.4517 0.3301
-0.5410 -0.5416 -0.1102 0.0641 0.4323 -0.4592
-0.0902 0.3478 -0.9255 0.0656 -0.0254 -0.0967
-0.1803 0.3330 0.0497 -0.4355 0.7045 0.4101
0.2705 -0.4996 -0.2538 0.4300 0.2334 0.6111
-0.7213 0.2446 0.1634 0.4542 -0.2403 0.3594
R =
-11.0905 1.8033 -9.6479 -1.4427 -4.8690 8.3855
0 -11.0339 10.2050 -10.2956 8.8109 -1.3484
0 0 -2.7886 -2.2049 -2.9077 6.5758
0 0 0 6.2495 2.1248 -4.0461
0 0 0 0 13.1412 -16.6327
0 0 0 0 0 8.7526
o) 计算矩阵的 LU 分解(LU Decomposition)
>> A
A =
3 4 -1 1 -9 10
6 5 0 7 4 -16
1 -4 7 -1 6 -8
2 -4 5 -6 12 -8
-3 6 -7 8 -1 1
8 -4 9 1 3 0
>> [L,U]=lu(A)
L =
0.3750 0.6875 0.0909 -0.8013 1.0000 0
0.7500 1.0000
展开阅读全文