1 概述
由
m
×
n
m \times n
m×n个数
a
i
j
a_{ij}
aij排成的
m
m
m行
n
n
n列的数表称为
m
m
m行
n
n
n列的矩阵,简称
m
×
n
m \times n
m×n矩阵。记作:
A
=
[
a
11
a
12
⋯
a
1
n
a
21
a
22
⋯
a
2
n
a
31
a
32
⋯
a
3
n
⋯
⋯
⋯
a
m
1
a
m
2
⋯
a
m
n
]
\mathbf{A}=\left[\begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1 n} \\ a_{21} & a_{22} & \cdots & a_{2 n} \\ a_{31} & a_{32} & \cdots & a_{3 n} \\ \cdots & \cdots & & \cdots \\ a_{m 1} & a_{m 2} & \cdots & a_{m n} \end{array}\right]
A=⎣⎢⎢⎢⎢⎡a11a21a31⋯am1a12a22a32⋯am2⋯⋯⋯⋯a1na2na3n⋯amn⎦⎥⎥⎥⎥⎤
这
m
×
n
m \times n
m×n个数称为矩阵
A
A
A的元素,简称为元,数
a
i
j
a_{ij}
aij位于矩阵
A
A
A的第
i
i
i行第
j
j
j列,称为矩阵
A
A
A的
(
i
,
j
)
(i,j)
(i,j)元,以数
a
i
j
a_{ij}
aij为
(
i
,
j
)
(i,j)
(i,j)元的矩阵可记为
(
a
i
j
)
(a_{ij})
(aij)或
(
a
i
j
)
m
×
n
(a_{ij})_{m \times n}
(aij)m×n,
m
×
n
m \times n
m×n矩阵
A
A
A也记作
A
m
n
A_{mn}
Amn。
元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵。而行数与列数都等于
n
n
n的矩阵称为
n
n
n阶矩阵或
n
n
n阶方阵。
2 加法运算
( a i j ) n × n + ( b i j ) n × n = ( a i j + b i j ) n × n (a_{ij})_{n \times n}+(b_{ij})_{n \times n}=(a_{ij}+b_{ij})_{n \times n} (aij)n×n+(bij)n×n=(aij+bij)n×n
3 减法运算
( a i j ) n × n − ( b i j ) n × n = ( a i j − b i j ) n × n (a_{ij})_{n \times n}-(b_{ij})_{n \times n}=(a_{ij}-b_{ij})_{n \times n} (aij)n×n−(bij)n×n=(aij−bij)n×n
4 乘法运算
( a i j ) n × n × ( b i j ) n × n = ( ∑ k = 1 n a i k × b k j ) n × n (a_{ij})_{n \times n} \times (b_{ij})_{n \times n}=(\sum_{k=1}^{n} a_{ik} \times b_{kj})_{n \times n} (aij)n×n×(bij)n×n=(∑k=1naik×bkj)n×n
5 C++实现
const int MAXN=15;
const int MOD=7;
int sz=2;
struct Matrix{
int dt[MAXN][MAXN];
Matrix(int tp=0){
for(int i=1;i<=sz;i++){
for(int j=1;j<=sz;j++){
if(i==j) dt[i][j]=tp;
else dt[i][j]=0;
}
}
}
Matrix operator+(const Matrix& a){
Matrix res;
for(int i=1;i<=sz;i++){
for(int j=1;j<=sz;j++){
res.dt[i][j]=(dt[i][j]+a.dt[i][j])%MOD;
}
}
return res;
}
Matrix operator-(const Matrix& a){
Matrix res;
for(int i=1;i<=sz;i++){
for(int j=1;j<=sz;j++){
res.dt[i][j]=(dt[i][j]-a.dt[i][j])%MOD;
}
}
return res;
}
Matrix operator*(const Matrix& a){
Matrix res;
for(int i=1;i<=sz;i++){
for(int j=1;j<=sz;j++){
int sum=0;
for(int k=1;k<=sz;k++){
sum=(sum+dt[i][k]*a.dt[k][j])%MOD;
}
res.dt[i][j]=sum;
}
}
return res;
}
};