zoukankan      html  css  js  c++  java
  • 关于线性代数的一点点心得

    本科的时候上过线性代数,研究生的时候上过矩阵论,但是现在用起相关的知识来还是很不顺手,感觉是还没有入门。因为矩阵是到大学才学的东西,以前没有接触过,我觉得思考矩阵的方式和以前的数学有很大的区别。我也一直在想为什么对矩阵总不能开窍,我想了想,可能是我这矩阵的自学的。因为实在是不喜欢本科的矩阵老师,所以基本上没有上,等到考研的时候才重新自学,而且到考研前几天还一片茫然,不知所云,但是我考研数学得分最多就是矩阵部分。世界上有些东西就是很出人意料,不过意料之外,情理之中,因为考试那几个题我以前都做过,我貌似也就会这些题(偷笑~),这得感谢考研数学的那本神书啊,写矩阵部分的人貌似叫李永乐,不知道他现在还神不神啊,嘻嘻。。。

    言归正传,最近在看麻省理工的线性代数课程。刚看到第二节课程,但是我已经发现了我思考矩阵问题上的一个局限,那就是我从来没有从全局的方式来思考,也就是只注重每个数字,而没有将矩阵看成一个整体。或许这就是我矩阵总不灵光的根源吧。

    下面就记录一下我的点点收获,关于矩阵乘法。

    首先,线性代数课从是从我们最熟悉的线性方程组开始:

    a11*x+a12*y+a13*z=b1

    a21*x+a22*y+a23*z=b2

    a31*x+a32*y+a33*z=b3

    然后这个方程组可以这样表示:

    Ax=b

    然后是矩阵乘法。学过矩阵的人都知道矩阵乘法的公式,一行和一列对应的元素相乘得到一个结果加入结果矩阵的特定位置,这个就不说了。但是在MIT的现代课上,教授提出另外一种思路。比如,Ax=b 可以从线性组合的角度来思考。

    A=[a1,a2,a3,...] a1,a2,a3都是列向量。那么Ax其实是A的列向量的线性组合:Ax=x1*a1+x2*a2+x3*a3...注意,x1,x2,x3是数字,a1,a2是列向量。

    照此思路:

    xA=[x1,x2,x3,...][a1;a2;a3...]=x1*a1+x2*a2+x3*a3+...

    其中a1,a2是行向量,也就是说把A按照行来分块

    想AB=C这种矩阵乘法也可以按照这种思路,一行一行的算或是一列一列的算,而不是一个一个算。

    方法一:将B按照列来分块

    AB=A[b1,b2,b3]=[Ab1,Ab2,Ab3],然后又到了上面Ax=b的模式了。

    这种解法给了我们一种新的理解C 的方式,那就是,C中的某列是A中的列向量的线性组合,系数就是B中相应的列。

    方法二:将A按照行来分块

    AB=[a1;a2;a3]B=[a1B;a2B;a3B],然后又到了xA的模式了。

    上面已经讲到了三种矩阵乘法的方法,A列*B行,A列的线性组合,B行的线性组合,下面还有两种求矩阵乘积。

    A的列向量*B的行向量,然后所有的矩阵求和

    求矩阵的成绩的最经典的算法是A的第i行向量乘以B的第j列向量得到结果矩阵中的Cij。麻省理工的那个线性代数提出了一个新的方法,就是用A的列乘以B的行。其实,可以相出来m-by-n的矩阵A的列向量是m-by-1的,n-by-p的B矩阵的行向量是1-by-p的,两个向量相成的结果是m-by-p维的矩阵,维度和C的相等。所以,C应该可以通过A的各个列与B的对应行相乘得到的结果矩阵相加。的确是这样的。

    A=[1 2 

         3 4]

    B=[5 6

         7 8]

    A*B=[1;3]*[5 6]+[2;4]*[7 8]=[5 6;15 18]+[14 16;28 32]=[19 22;43 50]

    其实一个n-by-1向量乘以一个1-by-m的向量是很好求的,因为得到的这些矩阵的的秩都是为1的。

    如[1;3]*[5 6]=[5 6;3*5 3*6] 或是这么写

    [1*5 1*6

    3*5 3*6]

    还有一个求矩阵乘法的方法是先分块,再相乘。

  • 相关阅读:
    Django之templates模板
    Django视图函数之request请求与response响应对象
    Django视图函数之三种响应模式
    Django视图函数函数之视图装饰器
    django 获取request请求对象及response响应对象中的各种属性值
    Django 项目中设置缓存
    python 中 使用sys模块 获取运行脚本时在命令行输入的参数
    Mac 设置终端中使用 sublime 打开文件
    iterm2 恢复默认设置
    Python replace方法的使用
  • 原文地址:https://www.cnblogs.com/naniJser/p/2683831.html
Copyright © 2011-2022 走看看