zoukankan      html  css  js  c++  java
  • 特征向量与特征值

    特征向量与特征值

    我们考虑任何一个线性变换都可以等同于乘上一个矩阵。

    但是乘上一个矩阵的复杂度是 (O(n^2)) 的,所以我们需要考虑更优秀的做法。

    考虑线性变换的矩阵 (A) 和一个列向量 (alpha)

    [Aalpha=lambdaalpha\ ]

    我们可以找出一个常量 (lambda) 和向量 (alpha)使得上式成立,那么我们称 (alpha) 就是这个线性变换的特征向量,(lambda)​ 就是它的特征值。

    由上式易得:

    [Aalpha=lambda Ialpha\ (A-lambda I)alpha=vec{0} ]

    我们要使得 (alpha e vec{0}) ,所以就要使得 ( ext{det}(A-lambda I)=0) ,因为我们不能使得等式两边同乘 ((A-lambda I)^{-1}) ,得到 (alpha=vec{0})

    这样的话我们就可以计算出特征值了,然后利用特征值就可以直接计算出特征向量(不唯一,且不一定线性无关)了。

    我们能否保证不同特征值计算出来的特征向量是线性无关的?

    这里摘取了一篇知乎里的证明,是根据定义入手,考虑几何意义,最后得出不相同。

    “特征”本与向量无关,只与矩阵的构造有关,它讲的是,在某一个“方向”上(这个方向完全由矩阵的构造决定,也就是由矩阵里几个列向量的相对关系决定了),会出现在经过y=Ax的运算(变换)后,y的方向居然与x的共线。这个情况不是普遍的,而是特别的,所以,这就是一个特别的方向。所有在这个方向上的(也就是在这一根直线上的)的向量,就都被称之为特征向量了(在这个特别方向上的向量)。如果你选的x在这个方向(直线)上,它就是一个特征向量。这时,y=Ax就会简化成y=λx,矩阵A与向量x相乘的效果就如同用一个系数λ去乘以x。同样,这时的y也是一个特征向量。

    用矩阵A乘以向量x,通常会得到一个长度和方向都与x不同的向量y,而在这个特别的方向上取的x(x里的数字之间取到了这个特定的比例),获得的y就是λx了,y对x就只有长短的不同,但一定是在一根线上的。而二者长短的比例就是λ,被称为特征值。

    但是,一个矩阵会不只有一个特别方向(但最多不超过矩阵的秩),在不同的特别方向上,各有无数的特征向量。而在不同的特别方向上,特质值(y,x的长度比)有可能相同(比较少见),也可能不同。不同特别方向上的 特征值没有啥关联性,即便它们相同了,也还是分别在不同的特别方向上的y与x之间的长度比。

    作者:天下无难课
    链接:https://www.zhihu.com/question/400720726/answer/1276734553
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    这样的话,我们就可以将一个线性变换(即列向量左乘一个矩阵)快速实现,如果我们提前知道了他的特征向量

    因为你发现求特征向量的过程和用特征向量分解最后的列向量的过程都是一个高斯消元,所以还不如 (O(n^2))​ 。

    但是如果能够提前构造优秀的特征向量就可以快速实现了,所以还是没有什么大用

  • 相关阅读:
    牛客网2017年校招全国统一模拟笔试(第三场)编程题集合
    侯捷STL学习(六)--深入list && Iterator traits
    侯捷STL学习(五)--allocator和容器之间的实现关系
    侯捷STL学习(四)--OOP-GP/操作符重载-泛化特化
    侯捷STL学习(三)--分配器测试
    侯捷STL学习(二)--序列容器测试
    牛客网2017年校招全国统一模拟笔试(第一场)编程题集合
    数据库面试题(一)
    SQL基础理论题
    基本SQL练习题--选课经典例题
  • 原文地址:https://www.cnblogs.com/Point-King/p/15111823.html
Copyright © 2011-2022 走看看