zoukankan      html  css  js  c++  java
  • 另一个角度看矩阵分析

    现在,我面对的书籍中,到处都充斥着矩阵或是向量,所以矩阵分析定是很重要的吧。抱着这个想法,我选修了“矩阵分析”这门课。然而我总是觉得老师、课本以一种怎么让我难受怎么讲的方式讲授矩阵。但待学完这门课程后,按自己的思路梳理一遍所学知识,又有了一种豁然开朗的感觉。本文将按照我个人的思路,阐明矩阵各个概念出现的联系或是因果关系。

    1. 为何要引入矩阵

        这个问题很好解释,矩阵使得公式表达更加的方便。就这一便利性而言就值得引入矩阵这一概念,譬如:

     

       在引入基本的矩阵乘法之后,就可以将上述的方程组表达成为,其中 $A in extit{C}^{m imes n}$,$mathbf{b} x in extit{C}^{m}, x in extit{C}^{m}$。当然,问题的表达是解决问题的关键,但我们的目的是解决问题。就拿线性方程组来说,如果我们要求解$X$,且对于$A$而言,存在$B$使得$AB=I$,那么显然有$X=Bmathbf{b}$。然而这一条件太严格了,$A$需要是一个满秩方阵。

        易证,当上述方程$AX=mathbf{b}$是相容方程(即有解),此时$B$要满足的条件是$ABA=A$。按照求解线性方程组的思路,矩阵的逆、广义逆、伪逆、矩阵的秩出现得就自然而然了。求解过程中需要应用到矩阵的满秩分解,范数等知识。

    2. 矩阵计算的根本是什么

        当然,计算过程中,不是求解一个线性方程组的解就够了的。就拿优化问题来说,解决问题的基本思路中要使用求导(求梯度)。如果我们仅仅是将问题采用矩阵表示,的确是简洁了,但不会求解(求导)又有什么用呢?而从就矩阵仅仅问题的一种表示方法而言,矩阵的运算不应该是一种全新的运算法则,而应和数的计算相契合

        先考虑一个最简单的,如下所示

        矩阵(向量)表示是

        导数表示为

        第一个问题是,求导到底求的是什么?一直以来,我们只会对一个变量求导,导数是切线的斜率;即使是多变量,也是一个一个求偏导。当然,导数的另一个理解是一阶逼近,即

       从这一点来说,数量函数对向量(矩阵)求导实际上是(矩阵导数有其严格定义,此处不做说明)

        所以这个最简单例子的求导结果是,这个例子说明了有关矩阵求导的两个特点:定义不是瞎定义的,是和数值函数导数相符合的;求解实际上是分别对矩阵(向量)中的元素分别求偏导。当然,这个例子引出了一个新的问题——既然最后我们还要分别求偏导,那么为何我们还要写成矩阵形式?

         这个问题的解答有两点:一是针对数量函数对矩阵的导数而言,也有基本的运算公式可以使用,而且有一些基本的导数是显而易见的;其二是有时候我们可以直接利用定义以及矩阵的性质求解,譬如前段时间同学问的问题

        可以采用如下方式求解

     

        那么,回到本节的标题,矩阵计算的根本是什么?矩阵提供了一种更简洁的描述问题的方式,采用矩阵这一方法表示问题进行计算时,对于矩阵有一套相应的运算规则,这就是矩阵计算。而采用矩阵计算出来的结果,必须是与不利用矩阵计算得出的结果相同的,这是矩阵计算推导过程中要遵循的准则。

        在这一思路下,包括矩阵求导,积分,微分方程在内的运算就不难理解了。再扩展开一点,包括矩阵序列、级数和函数的计算也遵循这一思路。

    3. 空间——让矩阵不仅仅是矩阵

        矩阵存在的意义难道仅仅只在于给出公式更有利的表示和简单的计算方法?当然不是,要不然矩阵课本也不会花那么大的力气从线性空间讨论起了。当我们回顾本文的第一小节,方程组的解是$X=Bmathbf{b}$。解是由矩阵、向量表示的,这给予我们一种新的思路——矩阵不仅简洁的表示了公式,矩阵还能够表示解

        有一点是很好理解的,那就是如果,那么

        其中,我们似乎已经很习惯了这种表示,但是是否思考过为何能这样表示呢?这一表示至少意味着具有以下性质,对于

        实际上是一线性空间,正是因为是线性空间,我们才能够利用一组基表示这一空间中的元素。当然,基显然不是唯一的。拿空间来说,是一组基;也是一组基。空间中的任意一向量可以表示为

        由此引出两个问题:不同基之间对应的关系是什么;哪组基更好。第一个问题的结论很简单,如果

        那么坐标之间的关系为$K_alpha=PK_eta$,不同基下的坐标之间的关系,我们可以理解为一种线性变换,即$f(X)=AX$。第二个问题,则必须提出一个合适的评判标准了。引入线性变换后,这个问题可以转换为另一个问题——具体来说,实际上线性变换的矩阵$P$针对不同的基具有不同的表达形式,也就是说我们只要关心矩阵$P$就足够了。关于线性变换,wiki上有如下的图示

    image

        上图表示了在下不同变换矩阵时的变化关系,其中蓝色是原始空间,绿色是映射后的图示。那么到这里可以解释“哪组基更好”,这取决于你更希望你的空间满足什么样的几何需求。

    4. 特征向量的特征

        映射(这里指线性变换)往往使得取值发生变化,然而我们总是希望在变化寻求一个不变的量,称之为特征。如果某一向量在经过线性变化后保持其方向的不变性,即那么就称为特征向量,为相应的特征值。脱离实际例子来谈“特征”很不“特征”,关于这一部分内容可以参考机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用,解释很详细并有距离。一点小的瑕疵是没有阐明SVD和特征值之间的关系,举例中有一点小错误。本节接下来的内容将致力于阐明矩阵对角化的相关联系。

        求解特征值就是求解,如果是一个对角阵,那么显然有特征值为。有注意的是特征值和线性变换是密不可分的,完了,写不下去了……我自己也说不明白了……(待修改


    鉴于原先思路已经写不下去了,那就先简单讲讲各个对角化之间的关系吧。

        对于同一线性变换而言,不同基下的矩阵表示满足(相似关系)

        前文还是说明了一点,那就是对角矩阵对于一个线性变换来说是极其的方便的,所以我们希望矩阵能够相似于一个对角阵。但是很不幸的是,不是所有的矩阵都能相似于对角阵,于是提出了一个Jordan标准型的东西。(还没怎么遇到过涉及Jordan标准型的问题)

        而更多情况是,我们不仅仅想要相似对角阵,还对有要求,毕竟其列向量就是特征向量。我们希望一组基是正交的,归一化的。也就是说,这就是酉对角化的概念。酉对角化要求更为严苛,需满足

    Hermite矩阵是满足这一条件的,那么对于任意一个矩阵,我们可以通过求或是的酉对角化求得奇异值分解

        也就是说,在相似对角化的基础上进行约束或是妥协,尽可能的发现矩阵的特征。所以矩阵的很多内容在讲对角化,目的大抵如此。

    5. 总结

        3.4结写得有点混乱不堪,矩阵方面的知识还需要进一步的掌握。或许要了解到足够多的实际问题,在解决的过程中体会才会有更深的理解。

        而学习过程中多问几个为什么,为什么要做这样做以及这样做的好处是什么,对学习将会是大有裨益的。

        本文如有什么错误或是不足,还请大家指正。而且居然还总结不下去了……

  • 相关阅读:
    SGU 176.Flow construction (有上下界的最大流)
    POJ 2391.Ombrophobic Bovines (最大流)
    poj 1087.A Plug for UNIX (最大流)
    poj 1273.PIG (最大流)
    POJ 2112.Optimal Milking (最大流)
    SGU 196.Matrix Multiplication
    SGU 195. New Year Bonus Grant
    关于multicycle path
    ppt做gif动图
    codeforces 598A Tricky Sum
  • 原文地址:https://www.cnblogs.com/sea-wind/p/4176997.html
Copyright © 2011-2022 走看看