【发布时间】:2011-03-17 15:28:56
【问题描述】:
我正在实现this paper 中描述的系统,但我有点卡住了。我最近才遇到张量/特征值等,如果这有点简单,请原谅!
给定一个 2x2 张量,我如何计算它的主要和次要特征向量?
易于翻译成 C# 的实现的奖励积分 ;)
【问题讨论】:
标签: c# language-agnostic math eigenvector eigenvalue
我正在实现this paper 中描述的系统,但我有点卡住了。我最近才遇到张量/特征值等,如果这有点简单,请原谅!
给定一个 2x2 张量,我如何计算它的主要和次要特征向量?
易于翻译成 C# 的实现的奖励积分 ;)
【问题讨论】:
标签: c# language-agnostic math eigenvector eigenvalue
(我使用的是 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 d-t]是奇异的,表示其行列式为零,表示(a-t)(d-t)-bc=0,表示t^2 - (a+d)t + (ad-bc) = 0。
所以:求解该方程的特征值,然后按照我上面描述的方式获得特征向量。
特征值可能很复杂(例如,对于旋转)。在这种情况下,您也会得到复杂的特征向量,这是正确的,因为 Av=kv 不能具有 A,v 实数但 k 不是实数。
两个警告。
有些矩阵有两个相等的特征值。它们可能有也可能没有两个独立的特征向量。如果矩阵是单位矩阵的常数倍数——形式为 [k 0; 0 k] -- 那么它确实有两个独立的特征向量,实际上 any 两个独立的向量都可以,因为一切都是一个特征向量。否则,只有一个特征向量,任何依赖于两个特征向量的定理或算法都可能失败。这将发生,例如,使用 [1 k; 形式的“剪切”矩阵。 0 1]。
在大于 2 的维度中,您不希望以这种方式做事。计算特征向量和特征值有很多更好(但更复杂)的方法,并且您无法获得“正确”数量的独立特征向量的方法更广泛。
【讨论】: