另一种方法是创建一个置换矩阵以从向量中提取已知和未知的行。
这种方法稍微复杂一些,但对程序员更友好:
说出你的情商。系统是:
K . T = Q
其中K 是3x3,T 和Q 是3x1 向量。您可以创建一个排列 Pf 矩阵,当它乘以 T 时,结果是 T 矩阵(仅 T2)的未知部分,在您的情况下排列矩阵将是一个 1x3 矩阵:
Pf = [0 1 0]
|100|
Tf = Pf * T = [0 1 0]* |T2 | = [T2]
|0 |
另一个排列矩阵将从T 矩阵中获取已知部分,在您的情况下,它将是2x3 矩阵:
| 1 0 0|
Ps = | 0 0 1|
Ts = Ps * T = | 1 0 0| |100| |100|
| 0 0 1| *| T2| = |0 |
|0 |
现在一切准备就绪,你可以假设系统是这样的:
K . T = Q
K = |Kff Kfs|
|Kfs Kss|
Q = |Qf|
|Qs|
T = |Tf|
|Ts|
其中f 是未知右侧的前缀,s 前缀是已知右侧的前缀。你可以像这样找到Pf、Ps、Qf、Qs、Kff、Kfs、Ksf和Kss:
Tf = Pf * T
Tq = Ps * T
Qf = Pf * Q
Qq = Ps * Q
Kff = pf * K * pf` (note: ` denotes the transpose)
Kfs = pf * K * ps` (note: ` denotes the transpose)
Ksf = ps * K * pf` (note: ` denotes the transpose)
Kss = ps * K * ps` (note: ` denotes the transpose)
现在需要找到未知向量Tf 和Qs:
K . T = Q
|Kff Kfs| |Tf| = |Qf|
|Kfs Kss| |Ts| |Qs|
表示:
Kff * Tf + Kfs * Ts = Qf
Kfs * Tf + Kss * Ts = Qs
从第一个开始:
Tf = Kff^-1 * (Qf - Kfs * Ts)
通过上面的等式你可以找到Tf(注意所有右边都是已知的矩阵和向量,所以需要进行数值运算)
从第二个开始:
Qs = Kfs * Tf + Kss * Ts
这样Qs 和Tf 都可以找到。找到Tf 和Qs 后,您可以这样做以形成原始的T 和Q 矩阵:
Q = Ps` * Qs + Pf` * Qf
T = Ps` * Ts + Pf` * Tf