<p>让我们回顾一下您的要求,以澄清:</p>
<ol>
<li>求矩阵的特征向量<code>mat</code></li>
<li>该特征向量应与矩阵的最大特征值相关联</li>
<li>该矩阵是<a href="http://en.wikipedia.org/wiki/Principal_component_analysis" rel="nofollow noreferrer">principal component analysis</a>的对称协方差矩阵。<strong>尤其是对称的。</strong></li>
<li>您的矩阵是3乘3的正方形<strong>,如代码中所示,并在(现在已删除)注释中确认。在</li>
</ol>
<p>在这些非常具体的情况下,以下答案适用。然而,tmyklebu警告说,对于某些病理性矩阵,这种方法的数值不稳定性,特别是当<code>r</code>接近<code>-1</code>时。在</p>
<hr/>
<p>好吧,让我们从<a href="http://en.wikipedia.org/wiki/Characteristic_polynomial" rel="nofollow noreferrer">wikipedia's page on Characteristic polynomials</a>开始读一点</p>
<blockquote>
<p>In linear algebra, the characteristic polynomial of a square matrix is a polynomial, which is invariant under matrix similarity and has the eigenvalues as roots. <img src="https://upload.wikimedia.org/math/f/6/f/f6fe4fa336f1255262578af6f7bcecf2.png" alt="det(zI-A)"/></p>
</blockquote>
<p>等等,让我们直接跳到<a href="http://en.wikipedia.org/wiki/Eigenvalue_algorithm#3.C3.973_matrices" rel="nofollow noreferrer">3x3 matrix section in the page on Eigenvalue algorithms</a>。在</p>
<blockquote>
<p>If A is a 3×3 matrix, then its characteristic equation can be expressed as:
<img src="https://upload.wikimedia.org/math/3/6/8/368d6fcf38d02c589e77e415a02b08ad.png" alt="det(zI-A)"/></p>
</blockquote>
<p>后面几行后面是(或多或少)这个伪代码,<strong>对于对称矩阵</strong>(如果我没弄错的话,您可能有复特征值):</p>
<pre><code>p1 = A(1,2)^2 + A(1,3)^2 + A(2,3)^2
if (p1 == 0)
% A is diagonal.
eig1 = A(1,1)
eig2 = A(2,2)
eig3 = A(3,3)
else
q = (A(1,1) + A(2,2) + A(3,3)) / 3
p2 = (A(1,1) - q)^2 + (A(2,2) - q)^2 + (A(3,3) - q)^2 + 2 * p1
p = sqrt(p2 / 6)
B = (1 / p) * (A - q * I) % I is the identity matrix
r = determinant(B) / 2
% In exact arithmetic for a symmetric matrix -1 <= r <= 1
% but computation error can leave it slightly outside this range.
if (r <= -1)
phi = pi / 3
elseif (r >= 1)
phi = 0
else
phi = acos(r) / 3
end
% the eigenvalues satisfy eig3 <= eig2 <= eig1
eig1 = q + 2 * p * cos(phi)
eig3 = q + 2 * p * cos(phi + (2*pi/3))
eig2 = 3 * q - eig1 - eig3 % since trace(A) = eig1 + eig2 + eig3
end
</code></pre>
<p>所以第一种情况是<code>max(eig1,eig2,eig3)</code>,第二种情况是<code>eig1</code>。让我们称<code>e</code>这个最大的特征值。在</p>
<p>对于特征向量,您现在只需求解<code>(A-e*I)x=0</code></p>