zoukankan      html  css  js  c++  java
  • 矩阵

    我想向来认为数学是对客观世界的数字描述,而这种精确化的描述方式显然是所有自然科学得以空前发展的基础。
    既然是对客观世界的描述,那任何一个抽象的数学描述自然都可以用客观世界的语言来重新表达。矩阵也不例外。
    就我目前的知识而言,矩阵是对空间(二维、三维...n维)中点的运动的数学描述。一个矩阵代表了一个点相对于起点的位移。矩阵的乘法中涉及三个点,一个起点,一个是A矩阵描述的运动后的点,最后一个是B矩阵描述的运动后的点。矩阵的乘法是指起点要经过怎样的一次运动(矩阵)才能到达在经过两次运动后才能到达的最后的点。
    值得注意的是,矩阵是对运动的描述,并不涉及具体的点。但如果确定了一个点,比如起点,根据矩阵所描述的运动,其他的点自然是可以求得的。
    最后,如果想知道具体的数学运算是怎么得来的,可以参看 @赵亮 的回答。自己也可以假设一个具体点运算一遍,看矩阵乘法的结果描述的运动与经过两次运动后到达的点是否一致。
    希望对你理解矩阵和矩阵乘法的本质有所帮助。

    来试着回答一下这个问题吧。

    首先讲线性代数。
    既然是代数,无非都是研究之间的关系
    高中代数里面:
    基本量实数集里的标量量与量的关系可以是线性的(y=ax),也可以是非线性的(指数、幂、多项式等等)。
    线性代数
    基本量
     线性空间里的向量(一个数组),基本关系是严格的线性关系。会在最后一章“二次型”里面简单讲述二次关系。

    然后就是矩阵。
    矩阵就是描述这种线性关系的参数
    我们来比较:
    初等代数中,y=ax(xinRe, yinRe, ainRe)表示的是x
ightarrow y的一种映射关系a描述这个关系参数
    线性代数中呢,	extbf{y}=A	extbf{x} (	extbf{y}inRe^{m} ,  	extbf{x}inRe^{n} ,  AinRe^{m	imes n} )表示什么呢?
    首先与初等代数一样,这个等式表示的是	extbf{x}
ightarrow 	extbf{y}的一种映射(关系),同理此处矩阵A就是描述这种关系的参数
    换句话说aA本质是一样的

    那一定会有人问,为什么定义	extbf{y}=A	extbf{x}这么复杂呢?(远没有实数相乘这么简单)
    那我想说的是,其实这是在无损信息下最简单的关系了!
    且看:
    我们得考虑到input	extbf{x}是个n维向量,那么就得把这n个值都考虑一遍吧。。。。
    而且考虑到output	extbf{y}是个m维向量,那总得把上面这个n维向量考虑m次吧……
    这就决定了A的信息量一定至少得m	imes n……

    当然一定有人问,那为什么要用加权求和(而不用加权求积,先求和再求积等)的方式定义矩阵乘法?
    首先这是个线性算法(去翻线性的定义)。
    其次,我认为最重要的是,在非线性问题线性化后,求一阶近似的时候,
    一元函数:ysimeq y_0+a(dx)dy=a(dx)其中ay'(x)
    多元函数:	extbf{y}simeq 	extbf{y}_0+A(d	extbf{x} )d	extbf{y}=A(d	extbf{x})其中A	extbf{y}(	extbf{x})的Jacobian。
    换句话说,加权求和可以表达一种边际增加的概念,这是非常有用的。

    最后讲特征值和奇异值。
    首先说明的是,特征值奇异值是为了简化矩阵运算的一种方式,一种技巧,也是描述矩阵特征的一些参数。
    特征值是n	imes n矩阵特有的值。说其为特征值,根据定义也好理解:
    A	extbf{p}=lambda 	extbf{p},则说lambda 是一个特征值,	extbf{p}是一个特征向量。换句话说,在	extbf{p}这个方向上,A做的事情无非是把	extbf{p}沿其	extbf{p}的方向拉长/缩短了一点(而不是毫无规律的多维变换)。lambda 就是描述沿着这个方向上拉伸的比例
    那么这样,给定任意的一个向量	extbf{x},我们如何求A	extbf{x}呢? 很简单,把	extbf{x}沿着	extbf{p}_1, 	extbf{p}_2,...分解,然后分别按照各自的比例lambda_1, lambda_2,...伸缩 最后再求和即可。

    有人一定问,这不是折腾么!
    那么当你运算A^n	extbf{x}的时候就发现好处了!沿着各个	extbf{p}的伸缩正好是lambda^n
    所以,特征值在动态系统分析中是描述系统性质的非常重要的量,它决定了系统在空间内某个方向上的变化趋势(是无限扩张(lambda>1)?还是收缩(lambda<1)?还是保持不变(lambda=1)?),这是判断离散线性系统的重要特征。

    特征值分解也就很好定义。 一个可对角化方阵A
    分解为:A=PSigma P^{-1} P的列向量为特征向量(P=[p_1,p_2,...])。
    理解为:P为基的坐标分解变换+伸缩变换+P为基坐标还原变换

    奇异值是当A不是方形矩阵时候提取的一种伪特征值,也具有某些计算上的优势。 (这句话回头看看不准确)

    奇异值变换也是为了简化矩阵运算的一种方式。它和特征值变换的基本理念不同,看似繁琐一点,却能道出线性变换的本质
    定义:任何AinRe^{m	imes n} 的矩阵都可以如下分解:
    A=USigma V^*
    其中UV是正交矩阵(复数域里面是酉矩阵),Sigma 是由对角阵和零矩阵合成的矩阵。
    它的含义是 任何A的变换可以理解为 一个正交变换+伸缩变换+另一个正交变换。(正交变换可以暂时理解为 不改变大小以及正交性的旋转/反射 等变换)
    这是对线性变换的本质的阐释!

    特征值变换的条件很苛刻,A必须是1方阵2可对角化

    而奇异值变换却对A没有任何要求!它阐明的是一般线性变化的本质!

    矩阵不是线性代数最重要的课题,是次重要的。

    线性代数研究的东西,可以统一地说成是线性空间。

    研究向量——向量的全体是一个线性空间。

    研究线性映射——线性映射的全体是一个线性空间。

    我们用8A(八个公理)定义了什么是线性空间:

    要素:数域K,集合V不是空集,两个映射+: VxV->V和*: KxV->V

    公理:(我把量词集中到前面了)

    exists 0 in V

    forall a, b, c in V, p, q in K

    (1) a + b = b + a

    (2) (a + b) + c = a + (b + c)

    (3) a + 0 = a

    (4) exists d in V, a + d = 0

    (5) p(a + b) = pa + pb

    (6) (p + q)a = pa + qa

    (7) p(qa) = (pq)a

    (8) 1a = a

    好了现在V是一个线性空间了。

    依此我们可以定义线性空间的基、维数等等等。

    线性空间的几何化例子:坐标系里面的原点、过原点的直线、过原点的平面、全空间等等等。

    但是代数不是几何,代数需要研究的是结构。线性代数呢,就是研究线性空间这种结构的。

    线性空间是一个很好的结构,我们可以研究线性空间到线性空间的映射,而且对这种映射加一点限制——线性。这是正比例函数的自然延拓。

    如果U, V都是K上的线性空间,f: U->V,符合下面的条件:

    forall x, y in U, k in K

    f(x + y) = f(x) + f(y)

    f(kx) = kf(x)

    那么f就是一个从U到V的线性映射。(这里特别强调一件事情:两个性质里面,左右虽然都是加法或数乘,但是由于U、V可以是不同的线性空间,所以等式左右的加法和数乘其实不同,不要混淆)

    现在来点具体的例子舒服舒服:R->R、C->C之类的正比例函数是线性映射。又例如,投影映射,绕原点的旋转映射等等。

    说了这么多,好像没有什么具象化的东西嘛,好像和矩阵没什么关系嘛。不然。矩阵该登场了。

    对于f: U->V是K上有限维线性空间U到有限维线性空间V的线性映射,选定U、V各自的一组基u1...um, v1...vn,我们可以用m*n个K里面的数决定这个线性映射

    具体地说,就是令

    f(ui) = sum(a(i, j)v(j), j=1...n), i=1...m

    知道了a(i, j),用线性映射的线性性和基的性质,可以得到任意U中元素在f作用下的像,所以说这m*n个数决定了这个线性映射

    把这m*n个数如此排列:

    a(1, 1) ... a(1, n)

    ...

    a(m, 1) ... a(m, n)

    这就是一个矩阵。

    说白了,选定基,就可以用矩阵描述线性映射。

    矩阵的乘法的意义极其显然——就是映射的乘法(复合)。(说到这个,最近某次考试我还因为这件事出了点洋相,不过因为保密协定,暂时不能说)

    相似矩阵是什么呢?是同一个线性变换在不同基下的矩阵。所以说,对角化、化为Jordan标准形就是要寻找一组基,让这组基下这个线性变换简单一点。方阵的特征值是什么呢?就是这种“简单”的一种表现,也很自然,因为一旦有了特征值和特征向量,这个线性变换看起来就像是正比例函数了!



    矩阵的合同,则是出于二次型的研究,二次型则可以用双线性形式表示。二次型看似和线性代数无关,其实骨子里还是线性的。

    那矩阵的相抵(等价)呢?如果是相似,我们已经知道了。注意谈到相似的时候,矩阵是方阵,而且所描述的线性映射必须是线性变换(同一个线性空间),而且所用的基必须是同一组。去掉这两个性质,U到V的线性映射,选定U不同的基、V不同的基,都会导致这个线性映射的矩阵不同。这些矩阵是相抵的。

    @Brown Chen 的基础上把这个步骤详细写出来,比如一个2D平面上的点(x_0,y_0),我们对它进行一次线性变换(暂时排除平移),得到(x_1,y_1):
    x_1=a_{11}x_0+a_{12}y_0
    y_1=a_{21}x_0+a_{22}y_0
    如果再对这个坐标再进行另外的一次线性变换,得到(x_2,y_2):
    x_2=a_{11}^{prime}x_1+a_{12}^{prime}y_1
    y_2=a_{21}^{prime}x_1+a_{22}^{prime}y_1
    好了,这个时候,如果我们想直接知道从(x_0,y_0)--->(x_2,y_2)的变换是怎样的,只需要做简单的代换就可以了,可以得到: 
    x_2=a_{11}^{prime}(a_{11}x_0+a_{12}y_0)+a_{12}^{prime}(a_{21}x_0+a_{22}y_0)=(a_{11}^{prime}a_{11}+a_{12}^{prime}a_{21})x_0+(a_{11}^{prime}a_{12}+a_{12}^{prime}a_{22})y_0
    y_2=a_{21}^{prime}(a_{11}x_0+a_{12}y_0)+a_{22}^{prime}(a_{21}x_0+a_{22}y_0)=(a_{21}^{prime}a_{11}+a_{22}^{prime}a_{21})x_0+(a_{21}^{prime}a_{12}+a_{22}^{prime}a_{22})y_0

    实际上我们需要的仅仅是那些系数而已,我们发现,如果我们能去掉变量,只保留系数,表达会很简洁:
    (x_0,y_0)---->(x_1,y_1) (x_1,y_1)------> (x_2,y_2)
    a_{11}    a_{12}                              a_{11}^{prime}   a_{12}^{prime}
    a_{21}    a_{22}                              a_{21}^{prime}   a_{22}^{prime}
    写的好看点是:
    egin{pmatrix} a_{11} && a_{21} \ a_{21} && a_{22}end{pmatrix}egin{pmatrix} a_{11}^{prime} && a_{21}^{prime} \ a_{21}^{prime} && a_{22}^{prime}end{pmatrix}
    而从(x_0,y_0)-----> (x_2,y_2) 同样是这样的形式,只不过服从一定的计算方法:
    a_{11}^{prime}a_{11}+a_{12}^{prime}a_{21}a_{11}^{prime}a_{12}+a_{12}^{prime}a_{22}
    a_{21}^{prime}a_{11}+a_{22}^{prime}a_{21}a_{21}^{prime}a_{12}+a_{22}^{prime}a_{22}
    同样:
    egin{pmatrix}a_{11}^{prime}a_{11}+a_{12}^{prime}a_{21} &&a_{11}^{prime}a_{12}+a_{12}^{prime}a_{22} \a_{21}^{prime}a_{11}+a_{22}^{prime}a_{21} &&a_{21}^{prime}a_{12}+a_{22}^{prime}a_{22}end{pmatrix}
    这样以后,就归纳出了矩阵,和矩阵的乘法。乘法的法则其实就是上面的方法。
    矩阵乘法的不可交换性也可以从这样的线性变换推导出来。

    本题目前下面的解释都是线性代数教材上的各种定义,但都太过复杂了。我尝试写一个浅显的解释:

    小明今天要做饭,消耗2斤肉,1斤蔬菜。肉每斤20元,蔬菜每斤5元,则一共需多少花费?
    这个问题的答案很简单:

    我们用向量相乘的方法写出来:
    如果小明第二天有另一种做饭的方法,需要消耗1斤肉,4斤蔬菜,那么这两种方法的花费各是多少呢?我们显然需要另算这第二种方法的花费。把这个做饭方式写在第二个矩阵(向量是宽度或长度为1的矩阵)里:
    小明家附近还有另一个菜市场,那里肉每斤15元,蔬菜每斤10元。那么,小明如果去这个菜市场,花费又是多少呢(分别计算上述两种做饭方式)?我们把这另外的一种价格写进第一个矩阵里:
    这样我们看到了一个矩阵乘法的例子。在左边的这个矩阵的每一行,都代表了一种价目表;在右边的矩阵的每一列,都代表了一种做饭方式。那么所有可能的组合所最终产生的花费,则在结果矩阵中表示出来了。

    小明有一天成为了餐厅大厨,小红做掌柜兼管算账。我们假设物价不变。小红发现,如果今天买10斤肉花了A元,明天买20斤肉就得花2A元。如果买一斤肉要花C元,买1斤菜要花D元,那么买一斤肉和一斤菜就要花(C+D)元。每天小明汇报今日的材料消耗之后,小红便会将材料消耗转为需要花的钱数。如果材料消耗翻倍,花的钱数也翻倍。另外,如果去不同的菜市场,也会得到不同的花钱数量。

    小明每月送来一张长列表,里面是每日的材料消耗;而经过小红的处理,这张列表会转为每日,在不同的菜市场购买这些材料的花费。材料消耗翻倍,花费也翻倍。我们管这种从材料列表转为开销表的过程,就叫做一个线性映射。这也即是矩阵乘法的意义。

    最后补充一点。线性代数的引入方式因教材不同而不同。从代数学自身的体系来讲,可能从线性空间引入是相对完备的;但是从一般我们学习知识的理解顺序来讲,从线性方程组引入最为合适。因为只要还记得鸡兔同笼,就很容易理解线性方程组,从而推广到矩阵,然后是线性变换,线性空间。按这样顺序讲授的教材推荐华章数学译丛的:
    线性代数.原书第8版.Leon.S.J.著.张文博译.机械工业出版社.2010

  • 相关阅读:
    asp.net 2.0 国际化 动态切换语言
    SKU、UPC、EAN和ISBN
    NCalc:处理数学运算的好帮手
    yaf 论坛安装
    Afterlogic xmail 邮局软件不能收email 设置
    要围着中心来做事
    保证Winform程序只有一个实例在运行
    可视热敏读写卡开发
    jQuery CSS 效果
    代碼小片斷
  • 原文地址:https://www.cnblogs.com/huoxl/p/4607880.html
Copyright © 2011-2022 走看看