<p>另一种方法是创建置换矩阵,从向量中提取已知行和未知行。
此方法稍微复杂一点,但对程序员更友好:</p>
<p>假设你的情商系统是:</p>
<pre><code>K . T = Q
</code></pre>
<p>其中<code>K</code>是<code>3x3</code>,<code>T</code>和<code>Q</code>是<code>3x1</code>向量。您可以创建一个置换<code>Pf</code>矩阵,当它与<code>T</code>相乘时,结果是<code>T</code>矩阵的未知部分(仅为T2),在您的情况下,置换矩阵将是<code>1x3</code>矩阵:</p>
<pre><code>Pf = [0 1 0]
|100|
Tf = Pf * T = [0 1 0]* |T2 | = [T2]
|0 |
</code></pre>
<p>另一个置换矩阵将从<code>T</code>矩阵中获取已知部分,在您的情况下,它将是<code>2x3</code>矩阵:</p>
<pre><code> | 1 0 0|
Ps = | 0 0 1|
Ts = Ps * T = | 1 0 0| |100| |100|
| 0 0 1| *| T2| = |0 |
|0 |
</code></pre>
<p>现在一切就绪,您可以假设系统如下:</p>
<pre><code>K . T = Q
K = |Kff Kfs|
|Kfs Kss|
Q = |Qf|
|Qs|
T = |Tf|
|Ts|
</code></pre>
<p>其中<code>f</code>是未知右侧的前缀,<code>s</code>前缀是已知右侧的前缀。你可以找到<code>Pf</code>、<code>Ps</code>、<code>Qf</code>、<code>Qs</code>、<code>Kff</code>、<code>Kfs</code>、<code>Ksf</code>和<code>Kss</code>如下:</p>
<pre><code>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)
</code></pre>
<p>现在需要找到未知向量<code>Tf</code>和<code>Qs</code>:</p>
<pre><code>K . T = Q
|Kff Kfs| |Tf| = |Qf|
|Kfs Kss| |Ts| |Qs|
</code></pre>
<p>意味着:</p>
<pre><code>Kff * Tf + Kfs * Ts = Qf
Kfs * Tf + Kss * Ts = Qs
</code></pre>
<p>从第一个开始:</p>
<pre><code>Tf = Kff^-1 * (Qf - Kfs * Ts)
</code></pre>
<p>通过上面的公式,你可以找到Tf(注意,所有右边都是已知的矩阵和向量,所以需要执行数值运算)</p>
<p>从第二个开始:</p>
<pre><code>Qs = Kfs * Tf + Kss * Ts
</code></pre>
<p>这样就可以同时找到<code>Qs</code>和<code>Tf</code>。一旦找到<code>Tf</code>和<code>Qs</code>,就可以这样做来形成原始的<code>T</code>和<code>Q</code>矩阵:</p>
<pre><code>Q = Ps' * Qs + Pf' * Qf
T = Ps' * Ts + Pf' * Tf
</code></pre>