【模板】矩阵乘法
矩 阵 乘 法【基 础】
模 板 题 ->矩阵乘法
1.定义
设A为 \(n\times p\) 的矩阵 ,B为 \(p\times m\) 的矩阵 ,那么称 \(m\times n\)的矩阵C为矩阵A与B的乘积,记作 \(C=AB\) 。
1.a 表达方式
其中矩阵C中的第 \({i}\) 行第 \({j}\) 列元素可以表示为:\((AB)_{ij}=\sum_{k=1}^{p}a_{ik}b_{kj}=a_{i1}b_{1j}+a_{i2}b_{2j}+...+a_{ip}b_{pj}\)
1.b 表达实例
\begin{matrix} & A & * & B & = & C \\ &
\begin{bmatrix}0&1&2&3\\ 4&5&6&7\\ 8&9&10&11\\ 12&13&14&15\\\end{bmatrix} & * & \begin{bmatrix}0&1&2&3\\ 4&5&6&7\\ 8&9&10&11\\ 12&13&14&15\\\end{bmatrix} & = & \begin{bmatrix}56&62&68&74\\ 152&174&196&218\\ 248&286&324&362\\ 344&398&452&506\\\end{bmatrix} \\ \end{matrix}
2.基本性质 [恒成立]
\(1.乘法结合律: (AB)C=A(BC)\)
\(2.乘法左分配律: (A+B)C=AC+BC\)
\(3.乘法右分配律: C(A+B)=CA+CB\)
\(4.对数乘的结合性: k(AB)=(kA)B=A(kB)\)
\(5.转置: (AB)^{T} =B^{T}A^{T}\)
3.代码示例
#include
//#pragma GCC optimize(2)
using namespace std;
#define int long long
const int mod=1e9+7;
int A[505][505],B[505][505],C[505][505];
int n,m,p;
inline void Matrix(int A[][505],int B[][505])
{
for (int i = 1; i <=n; ++i)
{
for (int j = 1; j <=m; ++j)
{
C[i][j] = 0;
for (int k = 1; k <=p; ++k)
{
C[i][j] = (C[i][j]+(A[i][k]*B[k][j])%mod)%mod;
}
}
}
}
signed main()
{
cin>>n>>p>>m;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=p; j++)
{
cin>>A[i][j];
A[i][j]=(A[i][j]+mod)%mod;
}
}
for(int i=1; i<=p; i++)
{
for(int j=1; j<=m; j++)
{
cin>>B[i][j];
B[i][j]=(B[i][j]+mod)%mod;
}
}
//
Matrix(A,B);
//
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
cout< } cout< } return 0; }