计算2x2张量的特征向量/值

时间:2011-03-17 15:28:56

标签: c# language-agnostic math eigenvector eigenvalue

我正在实施this paper中描述的系统,而且我有点陷入困境。我最近才遇到张量/特征值等,请原谅我这有点简单!

给定2x2张量,我如何计算它的主要和次要特征向量?

易于转换为C#的实现的奖励积分;)

1 个答案:

答案 0 :(得分:2)

(我使用的是MATLAB矩阵表示法;分号表示“新行”。)

[u; v]是[a b;的特征向量; c d]具有特征值t if [a b; c d] [u; v] = t [u; v]。这意味着au + bv = tu和cu + bv = tv;即,(a-t)u + bv = 0且cu +(d-t)v = 0。如果这有任何重要的解决方案,那是因为除了常数因子之外,这两个方程是相同的;然后你的特征向量是[u; v] = [b; t-a]。 (当然,仅限于常数因素。)

特征值是t的值,这是可能的;也就是说,除了常数因子之外,这两个方程是相同的。如果矩阵[a-t b; c dt]是单数,这意味着它的行列式为零,这意味着(at)(dt)-bc = 0,这意味着t ^ 2 - (a + d)t +(ad-bc)= 0。

所以:解决特征值的等式,然后按照上面描述的方式得到特征向量。

特征值可能很复杂(例如,用于旋转)。在这种情况下,你也会得到复杂的特征向量,这是正确的,因为你不能有Av = kv与A,v实,但k不实。

两个警告。

  1. 有些矩阵有两个相等的特征值。它们可能有也可能没有两个独立的特征向量。如果矩阵是单位矩阵的常数倍 - 形式为[k 0; 0 k] - 然后它确实有两个独立的特征向量,实际上任何两个独立的向量都可以,因为一切都是特征向量。否则,只有一个特征向量,依赖于两个特征向量的任何定理或算法都可能失败。这将发生,例如,形式为[1k;形式的“剪切”矩阵; 0 1]。

  2. 在大于2的维度中,您不希望以这种方式执行操作。有更好(但更复杂)的计算特征向量和特征值的方法,以及你可能无法拥有“正确”数量的独立特征向量的方式更广泛。