擅长:python、mysql、java
<p>主要原因是当你使用非平方矩阵p时,高度小于宽度,PP的行列式总是有一个零值,但由于计算误差!=0。所以在这之后,就不可能计算出真正的PPinv,任何前进的步骤都是毫无意义的。在</p>
<pre><code>P = randn(2,3)
P = np.array(P, dtype = decimal.Decimal )
PP = dot(P.T,P)
np.linalg.det(PP) #-5.2536080570332981e-34
</code></pre>
<p>那么为什么IA==A?在</p>
<p>我认为这是一种错误,错误会给你一个正常的结果。在</p>
<p>如何解决?在</p>
<ol>
<li>不要用Python来回答理论问题:)</li>
<li>将P=randn(0.9*h,h)改为P=randn(1.1*h,h)</li>
</ol>