性代数中的矩阵乘法推理。
首先要说什么是线性映射。线性映射即将 n 维的向量,通过 m*n 的矩阵映射成 m 维的向量。
比如A矩阵 [[0 1] [2 3] [4 5]] 乘以2维的x向量[0 1] ,即将此向量映射成3维的y向量[1 3 5], 计算方法为 y[i] =
那么矩阵乘法呢?即将多次映射过程中的中间矩阵相乘得一矩阵d,而d对原始向量映射的结果与多次映射的结果相同,即矩阵d为矩阵相乘结果。
乘法推理:Xn为原始向量, Rmn为一次映射矩阵,Tsm为二次映身矩阵,Ys为目标向量,Dsn为矩阵乘积目标:
即Ys = Xn * Rmn * Tsm;
其中一次映射得m维的向理: Vm = Xn*Rmn =
[
x0 * R00 + x1* R01 + ... +xn* R0n,
x0 * R10 + x1* R11 + ... +xn* R1n,
...
x0 * Rm0 + x1* Rm1 + ... +xn* Rmn,
];
其中一次映射得s维的向理: Ys = Vm * Tsm =
[
(x0 * R00 + x1* R01 + ... +xn* R0n) * T00 + (x0 * R10 + x1* R11 + ... +xn* R1n)*T01 + .... +(x0 * Rm0 + x1* Rm1 + ... +xn* Rmn) * T0m,
(x0 * R00 + x1* R01 + ... +xn* R0n) * T10 + (x0 * R10 + x1* R11 + ... +xn* R1n)*T11 + .... +(x0 * Rm0 + x1* Rm1 + ... +xn* Rmn) * T1m,
...
(x0 * R00 + x1* R01 + ... +xn* R0n) * Ts0 + (x0 * R10 + x1* R11 + ... +xn* R1n)*Ts1 + .... +(x0 * Rm0 + x1* Rm1 + ... +xn* Rmn) * Tsm,
];
单看第一行=====================开始
(x0 * R00 + x1* R01 + ... +xn* R0n) * T00 + (x0 * R10 + x1* R11 + ... +xn* R1n)*T01 + .... +(x0 * Rm0 + x1* Rm1 + ... +xn* Rmn) * T0m,
即为:
(x0 * R00* T00 + x1* R01* T00 + ... +xn* R0n* T00) + (x0 * R10*T01 + x1* R11*T01 + ... +xn* R1n*T01 )+ .... +(x0 * Rm0* T0m + x1* Rm1* T0m + ... +xn* Rmn* T0m) ,
即为:
x0 * (R00* T00 + R10*T01 + ... + Rm0* T0m) + x1 * (R01* T00 + R11*T01 + ... + Rm1* T0m) + ... + xn * (R0n* T00 + R1n*T01 + ... + Rmn* T0m)
因为向量 * 向量 = 向量各元素乘积之和,所以上面可简化为:
向量 Xn 乘以 向量 [(R00* T00 + R10*T01 + ... + Rm0* T0m), (R01* T00 + R11*T01 + ... + Rm1* T0m), ... (R0n* T00 + R1n*T01 + ... + Rmn* T0m)]
同理 (R00* T00 + R10*T01 + ... + Rm0* T0m),可简化为 向量Rv0 * 向量T0v,
其中,Rv0表矩阵Rmn的第0列列向量[R00, R10, ..., Rm0],
T0v表矩阵Tsm的第一行行向量[T01, T02, ..., T0m]
同理 (R01* T00 + R11*T01 + ... + Rm1* T0m),可简化为 向量Rv1 * 向量T0v,
,Rv1表矩阵Rmn的第1列列向量[R01, R11, ..., Rm1],
T0v表矩阵Tsm的第一行行向量[T01, T02, ..., T0m]
所以第一行即为
Xn * [Rv0 * T0v, Rv1 * T0v, ..., Rvn * T0v ]
单看第一行=====================结束
所有行都如上,可解释为Ys =
[
Xn * [Rv0 * T0v, Rv1 * T0v, ..., Rvn * T0v ],
Xn * [Rv0 * T1v, Rv1 * T1v, ..., Rvn * T1v ],
...
Xn * [Rv0 * Tsv, Rv1 * Tsv, ..., Rvn * Tsv ],
];
根据向量与矩阵的乘法,将向量Xn提出来,即得一矩阵Dsn =
[
[Rv0 * T0v, Rv1 * T0v, ..., Rvn * T0v ],
[Rv0 * T1v, Rv1 * T1v, ..., Rvn * T1v ],
...
[Rv0 * Tsv, Rv1 * Tsv, ..., Rvn * Tsv ],
];
即Ys =Xn* Dsn;
Rv0表矩阵Rmn的第0列列向量[R00, R10, ..., Rm0],
Rv1表矩阵Rmn的第1列列向量[R01, R11, ..., Rm1],
以此类推,
T0v表矩阵Tsm的第0行行向量[T01, T02, ..., T0m]
T1v表矩阵Tsm的第0行行向量[T11, T12, ..., T1m]
以此类推,
即:
Dsn[i, j] = Rvj *Tiv;即: 前矩阵的 j 所在的列向量 乘以 后矩阵的 i 所在的行向量;