1.矢量(向量)

a.矢量是有方向的。矢量的是指矢量在空间中的长度。单位矢量是指那些模为1的矢量。

点A到点B的向量AB, AB = B - A;

 

2.矢量运算相关

a.加减乘除,例:

a + b = (a+ bx, a+ by, a+ bz),加法就是每个分量分别相加。这里a、b均是矢量。

a - b = (ax - bx, ax - bx, az - bz),减法就是每个分量分别相减。这里a、b均是矢量。

n * b = (n * bx, n * by, n * bz) ,乘法就是每个分量分别相乘。这里n是标量,b是矢量。

b / n = (bx / n, by / n, bz / n),除法就是每个分量分别相除。这里n是标量,b是矢量。

 

b.求模,例:

length(a) = sqrt(ax2 + ay2 + az2),这里a是矢量。

 

c.单位矢量,例:

normalize(a) = a / length(a),这里a是矢量。

 

d.矢量点积(有些符号不好打,我就用函数表示了)满足交换律。例:

dot(a, b) = ax * bx + ay * by + az * bz,这里a、b是矢量。dot(a, b) = aTb

而且 dot(a, b) = length(a) * length(b) * cos(A),A是角A。因此,cos(A) = dot(a, b) / (length(a) * length(b)),如果cos(A) > 0,说明a、b夹角大于90度;cos(A) < 0,说明a、b夹角小于90度;等于0就是等于90度。

如果,length(a) 和 length(b)都是1,那么公式简化:cos(A) = dot(a, b)。因此,角A = arccos(dot(a, b))。

 

e.矢量叉积

叉积一般用来求法向量。

cross(a, b) = (ay * bz - az * by, az * bx - ax * bz, ax * by - ay* bx),这里a、b是矢量。

向量求模python 向量求模怎么算_逆矩阵

 

叉乘不满足交换律,a、b矢量叉积得到的新向量是垂直于a、b矢量的夹角的平面,就是法矢量。叉乘顺序不同会得到方向不同的矢量,毕竟一个平面有正反两面嘛。

 可以用左右手定则来判断,在此之前先说一下左右手坐标系,拇指代表x轴,食指代表y轴,中指代表z轴,如下图所示:

向量求模python 向量求模怎么算_向量求模python_02

然后如果是左手坐标系就用左手,右手坐标系就用右手,如下图:

向量求模python 向量求模怎么算_逆矩阵_03

a × b的方向:四指由a开始,指向b,拇指的指向就是a × b的方向,垂直于a和b所在的平面;

b × a的方向:四指由b开始,指向a,拇指的指向就是b × a的方向,垂直于b和a所在的平面;

a × b的方向与b×a的方向是相反的,且有:a × b = -b × a。

 

3.矩阵

a.由m*n个数排成m行n列的表,称为m行n列矩阵。

 

b.矩阵转置

把行的元素变成列的元素,列的元素变成行的元素。

性质1:转置的转置等于原矩阵。

(MT)T = M

性质2:相乘后的矩阵等于反向相乘各个矩阵的转置

(AB)T = BTA

 

c.矩阵和标量的乘法

是把标量依次和矩阵内的每个元素相乘。

 

d.矩阵加法与减法

前提条件是两个矩阵的行和列都相同,两个矩阵的各个元素之间相加或相减。

 

e.矩阵与矩阵相乘

两个矩阵相乘必须满足第一个矩阵的列数与第二个矩阵的行数相同。相乘的结果是,第一个矩阵的行 * 第二个矩阵的列的新矩阵。矩阵相乘不满足交换律,但满足结合律。方法是如下图所示:

向量求模python 向量求模怎么算_转置_04

另外,A * B = 转置(B) * 转置(A),这里A、B是矩阵,不过要满足相乘的条件。

 

f.单位矩阵

从左上角到右下角的对角线(主对角线)的元素均为1,其余元素为0的方正矩阵称为单位矩阵。任何矩阵与单位矩阵相乘,结果还是原来的矩阵(满足交换律)。

 

g.行列式

 2阶行列式为:

向量求模python 向量求模怎么算_转置_05

 

3阶行列式为:【ps:主对角线为正(红的),副对角线为负号(蓝的)】

向量求模python 向量求模怎么算_转置_06

 

n阶行列式:【n阶行列式计算困难,所以就有了代数余子式】

向量求模python 向量求模怎么算_向量求模python_07

 

 

性质1:|AB| = |A||B|,两个矩阵相乘的行列式结果等于两个矩阵格子的行列式结果相乘。

性质2:|AT| = |A|,行列式转置结果不变

性质3:矩阵任意行或列为0,行列式为0。

性质4:交换矩阵的任意两行或两列,行列式变负。

性质5:把行列式A的某行(或列)中各元同乘一数后加到另一行(或列)中各对应元上,结果仍然是A。

 

h.逆矩阵

逆矩阵必须是方阵(行等于列)。如果一个矩阵的行列式不为0,那么该矩阵可逆。

性质1:一个矩阵和它的逆矩阵相乘的结果为单位矩阵(满足交换律条件)。MM-1 = M-1M = I

性质2:逆矩阵的逆矩阵等于原矩阵。(M-1)-1 = M

性质3:单位矩阵的逆矩阵等于原矩阵本身。I-1 = I

性质4:转置矩阵的逆矩阵等于逆矩阵的转置。(MT)-1 = (M-1)T

性质5:矩阵串接相乘后的逆矩阵等于反向穿两各个矩阵的逆矩阵。式子:(AB)-1 = B-1A-1

逆矩阵的几何意义是用来还原矩阵变换的,如果一组向量v用矩阵M进行了一次变换,那么对变换后的向量用矩阵M的逆矩阵进行一次变换就会得到原来的矩阵。

M-1(Mv) = (M-1M)v = Iv = v

逆矩阵怎么求?例子:

第一步:

向量求模python 向量求模怎么算_转置_08

 

 

 第二步:

 

向量求模python 向量求模怎么算_向量求模python_09

第三步:

向量求模python 向量求模怎么算_转置_10

 

 

 

i.正交矩阵

正交矩阵式一种属性。正交矩阵每一行的模(平方和)都是1。

如果一个方阵M和它的转置矩阵的乘积是单位矩阵的话,矩阵M就是正交矩阵MMT = MTM = I

正交矩阵矩阵的转置矩阵等于它的逆矩阵。MT = M-1   (ps:旋转矩阵和镜像矩阵是正交矩阵)

正交矩阵的几何意义:如果把一组向量转换成3x3的正交矩阵的话,就表示一组向量的各个分量相互垂直。

 

 

j.矩阵变换

因为3x3的矩阵只能表示缩放和旋转,不能表示平移,所以要把矩阵扩充到4x4来表示平移。

(x, y, z, w),w = 1,代表这是一个点;w = 0,代表这是一个向量,长度无限。

平移矩阵(符号不会打):

向量求模python 向量求模怎么算_矩阵相乘_11

 

 

 平移矩阵的逆矩阵为平移的反向平移,如图:

向量求模python 向量求模怎么算_矩阵相乘_12

 

矩阵缩放,如图:

向量求模python 向量求模怎么算_矩阵相乘_13

如果k1 = k2 = k3,那么我们称之为等比缩放。

 

缩放矩阵的逆矩阵,如下图:

向量求模python 向量求模怎么算_向量求模python_14

 

 

选择矩阵,分为三个,分别绕x轴、y轴、z轴旋转,同样也是对于矩阵乘上列向量,如下图所示:

向量求模python 向量求模怎么算_逆矩阵_15

 

 

向量求模python 向量求模怎么算_向量求模python_16

向量求模python 向量求模怎么算_转置_17

 

旋转矩阵的逆矩阵等于旋转矩阵的旋转的相反角。旋转矩阵式正交矩阵。

一般,我们是按照这样的顺序做变换:缩放 => 旋转 => 平移。为的是防止坐标的不准确。毕竟矩阵大部分情况下不满足交换律。