一、问题的引入: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
例 1:学院进行体育比赛,四个年级分别获得金、银、铜牌数见表格 1-1; |
得分与奖金 |
||||||||||||||||||||
见表格 1-2; 统计每个年级的总分数和总奖金数。 |
|
|
|
|
|
|
|
|
|||||||||||||
|
|
表 1-1 |
|
|
|
|
|
|
|
|
|
|
表 1-2 |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
金牌 |
|
银牌 |
|
|
铜牌 |
|
|
|
|
|
|
|
分值 |
|
奖金(元) |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
四年级 |
|
|
3 |
|
|
3 |
|
|
1 |
|
|
|
|
|
金牌 |
|
|
3 |
|
500 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
银牌 |
|
|
2 |
|
300 |
|
|
三年级 |
|
|
5 |
|
|
4 |
|
|
2 |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
铜牌 |
|
|
1 |
|
100 |
|
|
二年级 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
一年级 |
|
|
4 |
|
|
4 |
|
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
表 1-3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
总分 |
|
|
|
|
|
|
|
|
总奖金(元) |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
四年级 |
|
|
3×3+3×2+1×1=16 |
|
|
|
|
|
3×500+3×300+1×100=2500 |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
三年级 |
|
|
5×3+4×2+2×1=25 |
|
|
|
|
|
5×500+4×300+2×100=3900 |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
二年级 |
|
|
4×3+5×2+6×1=28 |
|
|
|
|
|
4×500+5×300+6×100=4100 |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
一年级 |
|
|
4×3+4×2+7×1=27 |
|
|
|
|
|
4×500+4×300+7×100=3900 |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
如用矩阵 A、B、C 分别表示表 1-1,表 1-2,表 1-3 中的有关数据, |
|
|
|
|
|||||||||||||||||
|
|
3 |
3 |
1 |
|
|
3 |
500 |
|
16 |
2500 |
|
|||||||||
|
|
|
5 |
4 |
2 |
|
|
|
|
|
25 |
3900 |
|
||||||||
|
A = |
|
B = |
2 |
300 |
|
|
C = |
|
||||||||||||
|
|
|
4 |
5 |
6 |
|
|
|
|
|
|
|
|
|
28 |
4100 |
|
||||
|
|
|
|
|
100 |
|
|
|
|||||||||||||
|
|
|
4 |
4 |
7 |
|
|
|
1 |
|
|
|
|
27 |
3900 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
即:则这三个矩阵间有这样一种关系:
矩阵 C 完全由矩阵 A 和矩阵 B 决定,C 中每一个元素都是由 A 的某一行的元素和 B 的某一列对应元素相乘再相加得到。如 C 中第一行第二列的元素 2500=3×500+3×300+1×100,就是 A 的第一行元素与 B 的第二列对应元素相乘再相加的结果。
例 2:某单位计划在 2008 年与 2009 年两年内建造三种类型的房屋,建造每种房屋的数
168
量如表 1-1,每 100m2 房屋各种材料的耗用量如表 1-2,试求 2008 年与 2009 年计划建造房屋所需的各种材料的耗用量。
表 2-1
|
|
类型 |
|
|
|
|
|
|
|
|
|
|
|
甲 |
乙 |
|
丙 |
|
|
|
年份 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008 |
|
|
a11 |
a12 |
|
a13 |
|
||
|
|
|
|
|
|
||||
2009 |
|
|
a21 |
a22 |
|
a23 |
|
||
|
|
|
|
|
|
||||
|
|
|
|
表 2-2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
材料 |
|
|
|
|
|
|
|
|
|
|
|
|
水泥(t) |
|
钢筋(t) |
|
木材(m2) |
|
|
类型 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
甲 |
|
|
b11 |
|
b12 |
|
b13 |
|
|
|
|
|
|
|
|
|||
|
乙 |
|
|
b21 |
|
b22 |
|
b23 |
|
|
|
|
|
|
|
|
|||
|
丙 |
|
|
b31 |
|
b32 |
|
b33 |
|
|
|
|
|
|
|
|
解:依题意,2008 年和 2009 年计划建造房屋所需的各种材料的耗用量为表 2-3
表 2-3
|
材料 |
|
|
|
|
|
|
水泥(t) |
钢筋(t) |
木材(m2) |
|
年份 |
|
|
|
|
|
|
|
|
|
|
|
2008 |
|
a11b11 |
+ a12 b21 |
a11b12 + a12 b22 |
a11b13 + a12 b23 |
|
|
||||
|
|
+ a13 b31 |
+ a13 b32 |
+ a13b33 |
|
2009 |
|
a21b11 |
+ a22 b21 |
a21b12 + a22 b22 |
a21b13 + a22 b23 |
|
|
||||
|
|
+ a23 b31 |
+ a23 b32 |
+ a23b33 |
用矩阵 A、B、C 表示上面表格
a |
a |
|
a |
|
|
A = |
11 |
12 |
13 |
|
|
|
a |
a |
22 |
a |
|
21 |
|
23 |
|
b11 |
b12 |
b13 |
|
B = |
b |
b |
b |
|
|
21 |
22 |
23 |
|
|
b |
b |
b |
|
|
31 |
32 |
33 |
|
a b + a b + a b |
a b + a b + a b |
a b + a b + a b |
|
|||||||||||||||||
C = |
11 |
11 |
12 |
21 |
13 |
31 |
11 |
12 |
12 |
22 |
13 |
32 |
11 |
13 |
12 |
23 |
13 |
33 |
|
|
|
a b + a |
b + a b |
a b + a b + a b |
a b + a b + a b |
|
|||||||||||||||
21 |
11 |
|
22 |
21 |
23 |
31 |
21 |
12 |
22 |
22 |
23 |
32 |
21 |
13 |
22 |
23 |
23 |
33 |
则 C 中的元素也是由是由 A 的某一行的元素和 B 的某一列对应元素相乘再相加得到。这种由矩阵 A 和矩阵 B 决定矩阵 C 的方法就是矩阵的乘法。
二、矩阵乘法概念
定义 设 A = ( aij )m× r ,B = (bij )r ×n ,则由元素 cij = ∑aik bkj = ai1b1 j + ai 2 b2 j + + air brj k =1
构成的矩阵 C = ( cij )m× n 称为矩阵 A 与矩阵 B 的乘积,记为 C = AB .
这个定义说明,矩阵 A 与矩阵 B 的乘积 C 的第 i 行第 j 列的元素等于第一个矩阵 A 的第 i 行与第二个矩阵 B 的第 j 列对应元素乘积之和。并且矩阵 C 的行数等于矩阵 A 的行数,列数等于矩阵 B 的列数。
AB 和 BA 都有意义且他们的行数、列数相同,但 AB 和 BA 也不一定相等。此例还说明两个非零矩阵的乘积可能是零矩阵。
虽然 AC = BC 且 C ≠ O ,但不能推出 A = B 。根据上面的例题,在做乘法计算时要注意以下几点:1.矩阵乘法不满足交换律,一般来说 AB ≠ BA ;
2.矩阵乘法不满足消去律,一般来说,当 AB = AC 且 A ≠ O 时,不一定有 B = C ;3.一般由 AB = O ,不能推出 A = O 或 B = O ,这时称 A ( B )是 B ( A )的左(右)零
因子。
三、运算规律
1.结合律 ( AB)C = A(BC)
2.分配律 |
|
|
( A + B)C = AC + BC |
A(B + C) = AB + AC |
|
k( AB) = (kA)B |
|
|
定义 方阵的幂 Am |
= AA |
A m个 A连乘。 |
n×n |
|
代码实现矩阵乘法:
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int ai,aj,bi,bj; struct Mart { long long a[205][205]; }A,B,C; void Martix(Mart A,Mart B) { for(int i=1;i<=ai;i++) { for(int j=1;j<=bj;j++) { for(int k=1;k<=aj;k++) { C.a[i][j]+=A.a[i][k]*B.a[k][j]; } printf("%d ",C.a[i][j]); } printf("\n"); } } int main() { scanf("%d%d",&ai,&aj); for(int i=1;i<=ai;i++) for(int j=1;j<=aj;j++) scanf("%lld",&A.a[i][j]); scanf("%d%d",&bi,&bj); for(int i=1;i<=bi;i++) for(int j=1;j<=bj;j++) scanf("%lld",&B.a[i][j]); Martix(A,B); return 0; }