文档章节

3D数学 ---- 矩阵的更多知识(2)

rise-worlds
 rise-worlds
发布于 2016/06/20 13:38
字数 656
阅读 2
收藏 0

矩阵的逆

另外一种重要的矩阵运算是矩阵的求逆,这个运算只能用于方阵。

 

运算法则

方阵M的逆,记作M-1,也是一个矩阵。当MM-1相乘时,结果是单位矩阵。表示为公式9.6的形式:

并非所有的矩阵都有逆。一个明显的例子是若矩阵的某一行或列上的元素都为0,用任何矩阵乘以该矩阵,结果都是一个零矩阵。如果一个矩阵有逆矩阵,那么称它为可逆的或非奇异的。如果一个矩阵没有逆矩阵,则称它为不可逆的或奇异矩阵。奇异矩阵的行列式为0,非奇异矩阵的行列式不为0,所以检测行列式的值是判断矩阵是否可逆的有效方法。此外,对于任意可逆矩阵M,当且仅当v=0时,vM=0

M的”标准伴随矩阵“记作”adjM“,定义为M的代数余子式矩阵的转置矩阵。下面是一个例子,考虑前面给出的3x3阶矩阵M

计算M的代数余子式矩阵:

M的标准伴随矩阵是代数余子式矩阵的转置:

一旦有了标准伴随矩阵,通过除以M的行列式,就能计算矩阵的逆。

其表示如公式9.7所示:

例如为了求得上面矩阵的逆,有:

当然还有其他方法可以用来计算矩阵的逆,比如高斯消元法。很多线性代数书都断定该方法更适合在计算机上实现,因为它所使用的代数运算较少,这种说法其实是不正确的。对于大矩阵或某些特殊矩阵来说,这也许是对的。然而,对于低阶矩阵,比如几何应用中常见的那些低阶矩阵,标准伴随矩阵可能更快一些。因为可以为标准伴随矩阵提供无分支(branchless)实现,这种实现方法在当今的超标量体系结构和专用向量处理器上会更快一些。

矩阵的逆的重要性质:

 

几何解释

矩阵的逆在几何上非常有用,因为它使得我们可以计算变换的”反向“或”相反“变换 ---- 能”撤销“原变换的变换。所以,如果向量v用矩阵M来进行变换,接着用M的逆M-1进行变换,将会得到原向量。这很容易通过代数方法验证:

本文转载自:http://www.cnblogs.com/flying_bat/archive/2008/01/17/1042688.html

rise-worlds

rise-worlds

粉丝 3
博文 1755
码字总数 0
作品 0
深圳
程序员
私信 提问
Lesson6 矩阵变换,模型,视图,投影和viewport

前言 本来打算直接写教程 04 的,但是想到3D 变换涉及的数学知识较多,往往是很多初学者的拦路虎(比如我自己)。再加上OpenGL ES 2.0 不再提供OpenGL ES 1.0中 3D 变换相关的一些重量级函数...

gdxz110
2016/11/03
67
0
unity3d 数学基础与数学辅助类

------------------------------------------------------------- 转载注明smartdot:http://my.oschina.net/u/243648/blog/67193 1. 数学(点乘/叉乘)/unity3d的数学辅助类 2. 坐标系统(本......

Matrix4X4
2012/07/15
12K
1
文章-编程需要知道多少数学知识?

本文转自:编程需要知道多少数学知识?-唐小娟的翻译 下面是我在Reddit的子论坛 r/learnprogramming 看到的几个帖子: “要成为一个优秀的程序员需要学习多少数学?” “我应该重新学习数学吗...

BjarneCpp
2017/08/12
0
0
OpenGL入门6:矩阵与变换

本文是个人学习记录,学习建议看教程 https://learnopengl-cn.github.io/ 非常感谢原作者JoeyDeVries和多为中文翻译者提供的优质教程 近况 心酸 前言 在阅读本篇博客之前,你必须对向量和矩阵...

zhxmdefj
07/30
0
0
3D应用开发中的欧拉角和旋转矩阵

前言 在二维平面内,我们用来表示点的位置,通过向坐标原始值累加偏移值即可将点移动。但在三维空间内除了位置偏移外,还存在着旋转变化,因此空间内的每个物体都具有至少两个基础特性:位置...

酷家乐平台前端团队
04/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java常见异常处理

异常是Java程序中经常遇到的问题,一个异常就是一个Bug,就要花很多时间来定位异常。 Java异常 (1)Throwable是Java异常的顶级类,所有的异常都继承于这个类。 (2)Error,Exception是异常...

daxiongdi
15分钟前
1
0
Validator 常用注解

说明 Validator主要是校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于6位,是否是纯数字的,等等。那么在spring boot怎么使用这么强大的校验框架呢。 常用 [@null](https:...

五彩的颜色
24分钟前
1
0
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。

#1 先把入栈顺序的第一数据入栈, #2 if 入栈的数据==等于出栈的数据,就循环一次看是否新建的栈的数据是否出栈 #3 返回新建的栈是否为空,就是要的结果 public class Solution { public boo...

winkwink
30分钟前
1
0
《JAVA核心知识》学习笔记 (19. 数据库)

19.1.1. 存储引擎 19.1.1.1. 概念 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、 更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧...

Shingfi
36分钟前
4
0
三分钟手操自己的yum源

本文章原创首发公众号:编程三分钟 上次就想手操yum源了,考虑到有的朋友没接触过,直接写成了yum源的科普,活活憋了我一个星期,现在我们快快开始。 什么情况下我们需要搭建一个仓库呢? 记...

编程三分钟
40分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部