首页 > 学院 > 开发设计 > 正文

为什么要使用矩阵

2019-11-09 19:19:55
字体:
来源:转载
供稿:网友

我们不妨回忆一下,矩阵是怎么产生的。矩阵可以看成是一个个向量的有序组合,这说明矩阵可以类比向量;但是向量又是怎么产生的?向量则是一个个数字的有序组合,这又把我们的研究方向指向了“数字是什么”这个问题上。比如,数字1是什么?它可以代表1米,可以代表1千克,也可以代表1分钟、1摄氏度甚至1个苹果。它为什么有这么多的表示意义?答案很简单,因为在本质上,它什么都不是,它就是数字1,一个记号,一个抽象的概念。正因为它抽象,它才可以被赋予各种各样直观的意义!回到矩阵本身,我们才会明白,矩阵的作用如此之大,就是因为书本上那个很枯燥的定义——矩阵就是m行n列的一个数表!它把矩阵抽象出来,让它得到了“进化”。它是一个更一般化的概念:一个向量可以看作一个矩阵,甚至一个数都可以看成一个矩阵,等等。

在现实世界里存在三维空间的问题,比如当一架飞机从地面起飞,就会有平移、旋转等动作,如果要描述这架飞机上所有点的坐标变化,需要引入三维空间坐标,这样每一点的变化就需在三个维度上描述,引入线性变换的线性方程组,而处理这些线性方程组,就需要计算系数与三个变量的关系,再加上空间方向引入,就刚好是三维矩阵来处理了。由此可见,矩阵在描述三维物体的运动的变化是一个很合适的工具。

同理,矩阵是用来描述运动变化的工具,运动变化再具体一点,就是变换。比如一个物体等比例变大或缩小,这种变化就可采用矩阵来描述。

再比如说,仿射变换,就是在仿射空间里从一个点到另一个点的跃迁。附带说一下,这个仿射空间跟向量空间是亲兄弟。做计算机图形学的朋友都知道,尽管描述一个三维对象只需要三维向量,但所有的计算机图形学变换矩阵都是4 x 4的。说其原因,很多书上都写着“为了使用中方便”,这在我看来简直就是企图蒙混过关。真正的原因,是因为在计算机图形学里应用的图形变换,实际上是在仿射空间而不是向量空间中进行的。想想看,在向量空间里相一个向量平行移动以后仍是相同的那个向量,而现实世界等长的两个平行线段当然不能被认为同一个东西,所以计算机图形学的生存空间实际上是仿射空间。而仿射变换的矩阵表示根本就是4 x 4的。

“矩阵不仅可以作为线性变换的描述,而且可以作为一组基的描述。而 作为变换的矩阵,不但可以把线性空间中的一个点给变换到另一个点去,而且也能够把线性空间中的一个坐标系(基)表换到另一个坐标系(基)去。而且,变换点 与变换坐标系,具有异曲同工的效果。线性代数里最有趣的奥妙,就蕴含在其中。理解了这些内容,线性代数里很多定理和规则会变得更加清晰、直觉。

1. C++标准模板库从入门到精通 

http://edu.csdn.net/course/detail/3324

2.跟老菜鸟学C++

http://edu.csdn.net/course/detail/2901

3. 跟老菜鸟学python

http://edu.csdn.net/course/detail/2592

4. 在VC2015里学会使用tinyxml

http://edu.csdn.net/course/detail/2590

5. 在Windows下SVN的版本管理与实战 

 http://edu.csdn.net/course/detail/2579

6.Visual Studio 2015开发C++程序的基本使用 

http://edu.csdn.net/course/detail/2570

7.在VC2015里使用PRotobuf协议

http://edu.csdn.net/course/detail/2582

8.在VC2015里学会使用MySQL数据库

http://edu.csdn.net/course/detail/2672


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表