011010数组与矩阵第二章.docx
《011010数组与矩阵第二章.docx》由会员分享,可在线阅读,更多相关《011010数组与矩阵第二章.docx(20页珍藏版)》请在冰豆网上搜索。
![011010数组与矩阵第二章.docx](https://file1.bdocx.com/fileroot1/2023-6/15/e2afc6a1-8338-4ae6-8060-3ebe6a0f572b/e2afc6a1-8338-4ae6-8060-3ebe6a0f572b1.gif)
011010数组与矩阵第二章
01数组与矩阵
1数组构造和数组元素的访问
1.1数组构造
(1)直接构造一维数组;
调用格式为:
],,,[21naaaAL=
(2)直接构造nm´数组;
调用格式为:
],,,;;,,,;,,,[212222111211mnmmnnaaaaaaaaaBLLLL=
(3)冒号法构造一维数组;
调用格式为:
A=初值:
增量:
终值
(4)函数法构造一维数组.
调用格式为:
A=linspace(初值,终值,元素个数)
1.2数组元素的访问
(1)访问一维数组A中的第i个元素;
调用格式为:
A(i)
(2)访问数组A中第i行;
调用格式为:
A(i,:
)
(3)访问数组A中第j列;
调用格式为:
A(:
,j)
(4)访问数组A中第i行第j列的元素;
调用格式为:
A(i,j)
(5)数组按列拉长;
调用格式为:
A(:
)
(6)数组(向量)的长度;
调用格式为:
length(A)
(7)数组A所有元素之和.
调用格式为:
sum(A)
例1构造一个1到10由10个自然数组成的数组A(要求直接构造,冒号法构造,函数法构造),并求数组A所有元素之和.
【matlab命令1】
>>A=[1,2,3,4,5,6,7,8,9,10]
>>sum(A)
【输出结果】
A=
12345678910
ans=
55
【matlab命令2】
>>A=1:
1:
10,sum(A)
【matlab命令3】
>>A=linspace(1,10,10),sum(A)
例2已知二维数组
ú
987
654
321
A
(1)访问第2行第1列的元素;
(2)访问第2行;
(3)用命令算出数组的长度.
【matlab命令】
>>A=[1,2,3;4,5,6;7,8,9]
>>A2_1=A(2,1)
>>A2=A(2,:
)
>>A_length=length(A(:
))
【输出结果】
A=
123
456
789
A2_1=4
A2=
456
A_length=
9
说明:
ans是默认输出变量.变量是由字母、数字和下划线组成,最多31个字符.
2数组的运算
设],,,[21naaaAL=,],,,[21nbbbBL=.
2.1数组的加减
(1)数组的加法:
],,,[2211nnbababaBA+++=+L
调用格式为:
A+B
(2)数组减法:
],,,[2211nnbababaBA---=+L
调用格式为:
A-B
2.2数组的乘除、乘方和转置
(1)数组乘法:
],,,[*2211nnbababaBAL=.
调用格式为:
BA*.
(2)数组除法“.\”左除:
]/,,/,/[\2211nnabababBAL=.
“./”右除:
]/,,/,/[/2211nnbababaBAL=.
调用格式为:
BA\.BA/.
(3)数组乘方:
],,,[^21
21
nb
n
bb
aaaBAL=.
调用格式为:
BA^.
(4)数组转置:
行列互换
调用格式为:
A'
说明:
以上运算中要求A、B两个数组必须同阶.
例3已知二维数组ú
û
8765
4321
A,ú
û
3333
2222
B,求(1)A+B(2)5*A(3)A.*B(4)A.\B(5)A./B(6)A.^B
(7)A'
【matlab命令】
>>A=[1,2,3,4;5,6,7,8];
>>B=[2,2,2,2;3,3,3,3];
>>a1=A+B
>>a2=5*A
>>a3=A.*B
>>a4=A.\B
>>a5=A./B
>>a6=A.^B
>>a7=A'
【输出结果】
a1=
3456
891011
a2=
5101520
25303540
a3=
2468
15182124
a4=
2.00001.00000.66670.5000
0.60000.50000.42860.3750
a5=
0.50001.00001.50002.0000
1.66672.00002.33332.6667
a6=
14916
125216343512
a7=
15
26
37
48
说明:
命令“A=[1,2,3,4;5,6,7,8];”中,尾部的分号表示不显示结果.
例4已知8,6,5.0-=x,求xxy32
+=的值.
【matlab命令】
>>x=[-0.5,6,8];
>>y=x.^2+3*x
【输出结果】
y=
-1.250054.000088.0000
3矩阵构造和矩阵元素的操作
3.1矩阵构造
(1)直接构造
与数组构造一样
(2)构造特殊矩阵
产生一个m行n列零矩阵.
调用格式为:
b=zeros(m,n)
产生一个m行n列全为1的矩阵.
调用格式为:
c=ones(m,n)
产生一个m行n列的单位矩阵.
调用格式为:
d=eye(m,n)
产生一个0-1均匀分布的m行n列的随机阵.
调用格式为:
d=rand(m,n)
3.2矩阵元素的操作
(1)矩阵A中第i行第j列上的元素用0替换.
调用格式为:
A(i,j)=0
(2)矩阵A中第i行用0替换.
调用格式为:
A(i,:
)=0
(3)矩阵A中第i~j行用0替换.
调用格式为:
A(i:
j,:
)=0
(4)删除A的第i行,构成新矩阵.
调用格式为:
A(i,:
)=[]
(5)删除A的第i~j行,构成新矩阵.
调用格式为:
A(i:
j,:
)=[]
(6)将矩阵A和B水平或垂直拼接新矩阵.
调用格式为:
[A,B][A;B]
(7)矩阵列元素之和.
调用格式为:
sum(A)
(8)矩阵行元素之和.
调用格式为:
sum(A,2)
(9)矩阵的行数和列数.
调用格式为:
size(A)
(10)矩阵的元素访问与数组元素访问一样.
例5产生一个0-1均匀分布的5行5列的随机阵,并求每一列元素之和.
【matlab命令】
>>d=rand(5,5)
>>sum(d)
【输出结果】
d=
0.35290.19870.74680.84620.01960.81320.60380.44510.52520.6813
0.00990.27220.93180.20260.3795
0.13890.19880.46600.67210.8318
0.20280.01530.41860.83810.5028
ans=
1.51761.28883.00833.08432.4150
说明:
每次运行随机阵结果都是不同的,矩阵元素求和与数组元素求和命令一致.
例6已知矩阵
987
654
321
A分别写出
(1)A1为取矩阵A的第1~2行,第2~3列构成新矩阵;
(2)A2为删除A的第2行,构成新矩阵;
(3)A3为矩阵A的第3行第3列元素替换为100后的矩阵;
(4)A4为矩阵A的第1行分别用50,60,70替换后的矩阵;
(5)A5为A的第1~2行上的所有元素用0替换,构成新矩阵;
(6)A6为将矩阵A和A2垂直拼接成新矩阵;
(7)将A6增加3行.
【matlab命令】
>>A=[123;456;789]
>>A1=A(1:
2,2:
3)
>>A2=A;A2(2,:
)=[]
>>A3=A;A3(3,3)=100
>>A4=A;A4(1,:
)=[50,60,70]
>>A5=A;A5(1:
2,:
)=0
>>A6=[A;A2]
>>A7=size(A6);
>>A6(A7
(1)+3,:
)=0;
>>A7=A6
【输出结果】
A=
123
456
789
A1=
23
56
A2=
123
789
A3=
123
456
78100
A4=
506070
456
789
A5=
000
000
789
A6=
123
456
789
123
789
A7=
123
456
789
123
789
000
000000
说明:
构造一个m行n列的矩阵,一般可用命令zeros(m,n)
4矩阵的运算
4.1矩阵的加减、转置与数组的加减、转置一致
4.2矩阵的乘除
(1)矩阵乘法:
调用格式为:
A*B
(2)矩阵除法:
有“\”左除与“/”右除.若A为非奇异方阵,则A\B,A/B数学意义分别
表示BA1-
,1-
BA
调用格式为:
inv(A)*B或A\BB*inv(A)或A/B
例7已知矩阵
2
0
1
A,
ú-
-
1
1
2
B,求
(1)矩阵A的转置与B乘积;
(2)矩阵A与B转置的乘积.
【matlab命令】
>>A=[-1;0;2];
>>B=[-2;-1;1];
>>A'*B
>>A*B'
【输出结果】
ans=
4
ans=
21-1
000
-4-22
例8解线性方程组
35187
804654
36632
21
321
321
xx
xxx
xxx
解法1以上方程组改写成矩阵形式
351
804
366
087
654
321
3
2
1
x
x
x
记
3
2
1
351
804
366
087
654
321
x
x
x
XBA,,
原方程组可简写成矩阵形式AX=B,于是X=A\B,或BAX1-
=.
【matlab命令】
>>A=[123;456;780]
>>B=[366;804;351]
>>X=A\B
>>X'
【输出结果】
ans=
25.000022.000099.0000
方程组的解为99,22,25321===xxx
说明:
若方程式矩阵形式XA=B,则X=A/B.
解法2以上方程组改写成增广矩阵形式
ú
351087
804654
366321
~
A,用矩阵初等变换求解.
【matlab命令】
>>A=[123366;456804;780351];
>>A1=rref(A)
【输出结果】
A1=
10025
01022
00199
于是方程组的解为99,22,25321===xxx.说明:
命令rref适用与任何线性方程组求解.
5习题
1.你能用几种方法,构造1至100之间所有奇数组成的数组,请写出相应的命令,再求
出该数组的长度和所有元素之和.若把A记作1至100之间所有奇数依次从小到大组成的
数组,B记作1至100之间所有偶数依次从小到大组成的数组,试求:
(1)数组运算A+B,A.*B,A.\B,A./B,A转置运算
(2)访问A.*B中第11个元素
2.假设:
从北京到底特律的航线飞经以下10处:
A1(北纬31
0
,东经122
0
);A2(北纬36
0
,东经140
0
);
A3(北纬53
0
,西经165
0
);A4(北纬62
0
,西经150
0
);
A5(北纬59
0
,西经140
0
);A6(北纬55
0
,西经135
0
);
A7(北纬50
0
,西经130
0
);A8(北纬47
0
,西经125
0
);
A9(北纬47
0
,西经122
0
);A10(北纬42
0
,西经87
0
);
设某点的地理坐标(纬度,经度)为(f,l),请用以下公式把上述10处站点的地理坐标中
的东经经度数与西经经度数统一换算成东经经度,并把经度和纬度坐标换算成弧度单位.
已知单位转化数学模型为:
北纬f=0
j,东经
î
为西经
为东经
ll
ll
360
0
q(度)
1800
¸´=pjj,1800
¸´=pqq(弧度)
3.设x为1到10整数,求多项式132
+-xx的值.
4.先构造一个66´的零矩阵A,再使它的第一行元素分别为-5,68,1,0,31,
0.8;第二行第一列元素为7;第三行第三列元素为8;然后删除第二行,再增加四行全
为零;显示此时矩阵A,并访问当前矩阵A中第二行第三列的元素.
5.记三阶魔方矩阵X=magic(3,3),3行3列元素全为1的矩阵Y=ones(3,3),Z=2Y,求
矩阵X与Z的乘法.
6.解线性方程组
ì
-=-+-
=+-+
=+-+
-=--
5642
7482
84332
122
4321
4321
4321
431
xxxx
xxxx
xxxx
xxx