Day 1
矩阵
就是 \(n\) 行 \(m\) 列的二维数组,用中括号框起来。
例如当 \(n = 2,m = 3\) 时,有一个矩阵 \(A\) 如下:
\[\begin{bmatrix} 1&2&3 \\ 4&5&6 \\ \end{bmatrix} \]矩阵加减
将对应位置的两个元素相加,比较容易理解。
\[\begin{bmatrix} 1&2&3 \\ 4&5&6 \\ \end{bmatrix} + \begin{bmatrix} 1&2&3 \\ 4&5&6 \\ \end{bmatrix} = \begin{bmatrix} 2&4&6 \\ 8&10&12 \\ \end{bmatrix} \]减法同理。
矩阵乘数
也是比较简单,用所有元素乘上这个数。
\[\begin{bmatrix} 1&2&3 \\ 4&5&6 \\ \end{bmatrix} \times 3 = \begin{bmatrix} 3&6&9 \\ 12&15&18 \\ \end{bmatrix} \]矩阵乘矩阵
定义 \(A\) 是 \(n\) 行 \(m\) 列,\(B\) 是 \(m\) 行 \(k\) 列。
\[A= \begin{bmatrix} 1&2&3 \\ 4&5&6 \\ \end{bmatrix} \]\[B= \begin{bmatrix} 1&2 \\ 3&4 \\ 5&6 \\ \end{bmatrix} \]设答案矩阵为 \(C\),那么 \(C\) 一定是 \(n\) 行 \(k\) 列。
具体来看做法:
可以有技巧的算:\(C_{i,j} = \text{A 中的第 i 行(横向)的每一个数去依次乘上 B 中的每一行的第 j 个数(纵向)}\),说起来比较绕,但是懂得了规律以后会发现十分简单。
这里给出一张图片比较好理解:
咕咕
代码
矩阵乘法:
struct Matrix
{
int n,m;//n:矩阵行数 m:矩阵列数。
int a[105][105];//矩阵
Matrix ()//构造函数,作用:初始化矩阵为 0。
{
n = m = 0;
memset(a,0,sizeof (a));
}
};
Matrix operator * (const Matrix &a,const Matrix &b)
{
//重载 * 运算,起作用当且仅当是 Matrix 类型。
//&:取地址符,操作的时候是直接修改两个矩阵。
//const:防止运算的时候把运算的矩阵本尊破坏。
//注意类型。
Matrix ans;//返回的答案
int x = a.n,y = b.m;
int i,j,k;
for(i=1;i<=x;i++)
for(j=1;j<=y;j++)
//枚举每一个位置。
for(k=1;k<=a.m;k++)
//核心部分
ans.a[i][j] += a.a[i][k] * b.a[k][j];
return ans;
}
标签:begin,end,text,矩阵,times,数学,bmatrix,五一
From: https://www.cnblogs.com/OoXiaoQioO/p/17364406.html