作者:张帅
链接:https://www.zhihu.com/question/21082351/answer/34361293
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Action

我开始以为矩阵是为了把线性方程组的系数抽取出来,方便方程组化简和求解,后来发现矩阵的用处不止如此,不然就不会写一本书了。

矩阵可以方便的用来表示线性空间,一个简单的二维数阵,就可以表示成n维线性空间。

一个毫无意义的有序数阵,我们赋予它意义,他就可以表示成一个空间。那为什么要这么做呢?这是因为矩阵的运算可以表示线性空间的变换。以向量举例,我们求两个向量相加,可以让(x1,y1)和(x2,y2)相加,而不必真的在图上画出来这个相加后的向量。到三维空间我们就画不出来了,因为二维空间中的向量不能表示三维空间中的向量。同样,n大于3以上维度的空间中的向量我们不但不方便表示,甚至根本实现不了,但是矩阵可以帮助我们表示出来。一个3x3的矩阵,我们把他分成三列,就得到三个三维的列向量,同样4阶方阵中包含了4个4维向量。

--------------------------------------------------------------------------------------------------------------------------------------------
为了直观理解,下面全部用二维向量举例。

  1. 平面内引入直角坐标系之后,二维空间内所有的向量都可以用两个基向量i=(1,0)和j=(0,1)的线性组合来表示,例如a=(4,6),可以表示为a=4i+6j
  2. 但是也可以由i=(2,0)和j=(0,2)两个向量来表示,例如a=2i+3j
  3. 还可以由i=(1,1)和j=(1,-1)来表示,例如a=5i-1j
  4. 或者由i=(1,0)和j=(1,-1)表示,例如a=10i-6j
  5. 在1的基础上,我们还可以将a表示为i=(1,0),j=(0,1),k=(1,1)三个向量的线性组合,也就是a=4i+6j+0k或者a=0i+2j+4k或者a=2i+4j+2k等等等等我举不完了。这其中k=i+j

通过上面的举例我们可以总结出几条。

  1. 由5点到4点,将多余的基向量k去掉,得到最大线性无关向量组
  2. 由4点到3点,将两个基向量的夹角变成直角,实现正交化
  3. 由3点到2点,将构成正交的两个基向量旋转,使其与坐标轴重合,实现对角化
  4. 由2点到1点,通过伸缩将两个基向量的长度变成单位长度,实现规范化

通过上面的几个步骤,我们可以看出,任何一组向量构成的坐标系,都可以通过化简,正交,对角,规范的过程,将任何乱七八糟莫名其妙的坐标系变换成笛卡尔坐标系。那这么做有什么用呢?到这里我开了一下脑洞:
假如说,平面内有两个椭圆,将直角坐标系的原点放在一个椭圆的长轴和短轴交点处,这样就可以得到这个椭圆的标准方程,就是高中课本上那个。由于这两个椭圆的位置相对,这样一来另一个椭圆的位置也就定下来了,可惜很难看,长得很歪,很难用方程表示。这时就可以以这个椭圆为原点再建立一个坐标系,并且在这个坐标系下用标准方程表示出来,这样两个椭圆都有了方程来表示,问题就化简为了两个坐标系之间的关系,这时再用矩阵来运算就好了。可惜这里不能画矩阵,关于矩阵的好多问题都不能解释。

BTW,上面列举的例子都是同维度内的问题,关于升维和降维的问题其实关系到求矩阵的秩,以及线性方程组有解无解多解的问题。
----------------------------------------------------------------------------------------------------------------------------------------

理解矩阵与线性代数<转>的更多相关文章

  1. Python 矩阵(线性代数)

    Python 矩阵(线性代数) 这里有一份新手友好的线性代数笔记,是和深度学习花书配套,还被Ian Goodfellow老师翻了牌. 笔记来自巴黎高等师范学院的博士生Hadrien Jean,是针对& ...

  2. (邹博ML)矩阵和线性代数

    主要内容 矩阵 特征值和特征向量 矩阵求导 矩阵 SVD的提法 奇异值分解(Singular Value Decomposition)是一种重要的矩阵分解方法,可以看做对称方阵在任意矩阵上的推广. 假 ...

  3. loj#6040. 「雅礼集训 2017 Day5」矩阵(线性代数+递推)

    题面 传送门 题解 我的线代学得跟屎一样看题解跟看天书一样所以不要指望这题我会写题解 这里 //minamoto #include<bits/stdc++.h> #define R reg ...

  4. 【CSS3】 理解CSS3 transform中的Matrix(矩阵)

    理解CSS3 transform中的Matrix(矩阵) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu ...

  5. 理解CSS3 transform中的Matrix(矩阵)

    一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如“拉普拉斯不等式”).这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面“Matrix(矩阵) ...

  6. 理解CSS3 transform中的Matrix(矩阵)——张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2427 一.哥,我被你 ...

  7. 对于矩阵的理解-- by 孟岩老师

    “如果不熟悉线性代数的概念,要去学习自然科学,现在看来就和文盲差不多.” --瑞典数学家Lars Garding名著<Encounter with Mathematics>. 1. 矩阵的 ...

  8. 斯坦福大学CS224d基础1:线性代数回顾

    转自 http://blog.csdn.net/han_xiaoyang/article/details/51629242 斯坦福大学CS224d基础1:线性代数知识 作者:Zico Kolter ( ...

  9. 关于矩阵最通俗的解释-超级经典zz

    线性代数课程,无论你从行列式入手还是直接从矩阵入手,从一开始就充斥着莫名其妙.比如说,在全国一般工科院系教学中应用最广泛的同济线性代数教材(现在到了第四版),一上来就介绍逆序数这个“前无古人,后无来者 ...

随机推荐

  1. struts form表单提交action处理之后没有跳转页面

    作为一个ssm新人,对struts的理解也仅仅是书本上一些简单的示例, 对如下这个form进行提交之后,执行完action,并return 一个字符串,在struts配置文件中配置了对应的jsp页面, ...

  2. ZeroC Ice Ice Registry实现负载均衡

    Registry介绍         对于多个IceBox集群该怎么负载均衡?以服务注册表Registry为依托的Service Locator组件,以及依赖其而诞生的强大的分分布式框架-IceGri ...

  3. Android UI之View的加载机制(二)

    转载请标明出处:http://blog.csdn.net/sk719887916/article/details/39961201,作者:skay 对于接触安卓开不到一年的自己来说,总结下view的生 ...

  4. SharePoint 2010 电子书下载网站推荐

    最近一直搜集SharePoint2010的资料,偶尔发现一个网站还不错,推荐给大家,皮皮书屋http://www.ppurl.com/tag/sharepoint,里面有很多SharePoint201 ...

  5. Linux内核中断和异常分析(下)

    这节,我们继续上,中(以前的日志有)篇目进行分析,结合一个真实的驱动案例来描述linux内核中驱动的中断机制,首先我们先了解一下linux内核中提供的中断接口. 这个接口我们需要包含一个头文件:#in ...

  6. Sencha touch API

    Sencha touch  API http://docs.sencha.com/touch/2.3.1/#!/guide/getting_started

  7. SpringBoot2.0之一 新建项目helloWorld

    SpringBoot 以简单快速很快获得了广大开发者的青睐,本套SpringBoot系列以最新的SpringBoot 2.0为基础,同时会提及不同版本下SpringBoot的修改和变化,如有理解不当的 ...

  8. Jfinal调用Orcale存储过程

    因为项目需要,最近一直在学习Orcale存储过程,但发现在网上很少有人写Jave中Jfinal调用Orcale存储过程的文章,即使有也是几年前的,很多都不能用,今天给大家分享一段Jfinal调用Orc ...

  9. C++堆栈问题

    编写C++中的两个类 一个只能在栈中分配空间 一个只能在堆中分配. 解答: (1)代码如下 (2)堆栈分配内存的介绍 一.一个经过编译的C/C++的程序占用的内存分成以下几个部分:1.栈区(stack ...

  10. Django时区设置的郁闷

    第一次在windows下看到这个设置的时候,就设置成Ubuntu上时区设置的字符串“Asia/Shanghai”,结果报错通不过,最后记不清楚从哪儿查的,改成GMT+8. 最近把应用放到Linux上做 ...