第九种乘法:矩阵的乘法
矩阵的乘法,数学家和物理学家都在用。Matrix,几乎就是科学的代名词。
最简单的一种,就是上次买食物用的一种表:
算法也完全一样,唯一要求的是,前面的横着写,后面的竖着写。这么多,就算出一个数字来。下图是两个复杂些的矩阵相乘。把每次算出的数字填入相应的位置,可以得到最后的结果。
矩阵乘法是这样一个次序。
专为向量的各种变换而生。
网友将矩阵比做公交车,可以把向量带到它想去的任何地方。这个比喻很恰当。
但是,面对矩阵乘矩阵,他就无言了。其实,如果说矩阵是公交车,那么矩阵乘矩阵就是列车,多几节罢了。
矩阵的乘法是不可交换的。而且,通常简单的变换矩阵在左,被变换的对象在右。这种写法上,每个矩阵看起来就像一个函数,可以变换后面的变量。而矩阵乘以矩阵,可以看成构造一个复合函数。
矩阵最简单的用途是:平移、旋转、缩放空间中的图形。理论上讲,用3×3的矩阵就可以操作三维空间中的对象了,但OpenGL中的矩阵是4×4的,很多书籍只说“为了方便起见”,但没有说为什么会方便。因为,那用的是齐次坐标,可以省略很多的除法运算。而除法运算,无论对GPU还是CPU来说,都是很烧脑的事情。
第十种乘法 函数的内积
在向量的内积定义中,两个向量可以看成两个离散函数。
自变量都是从1到n,省略不写。
但普通的函数,是连续函数。对于离散函数,用符号Sigma来合并项,求点积;那么,对于连续函数,自然用积分符号来和并。
如果是复变函数,只需对后一个取共轭,
并且,函数的内积可以加权求和。