【原创】《矩阵的史诗级玩法》连载十:初中生都能看懂的逆矩阵求法

在程序这一行做久了,想法都变了不少。以前以为程序员只有数学好的人才能学得会,然而时代不同了,各种成熟的框架和工具链把程序的门槛一降再降。

我在三维家讲课的时候发现不少T4+级别的程序员甚至连向量加减法都没听懂。既然如此,那我也降一下门槛好了,虽然难度还是比调用api要高一些。

难点之一在于要先把逆矩阵这个概念给解释清楚。上篇我们提到了两个变换恰好相反的矩阵,而这正是逆矩阵的意义所在。从现象看,互逆矩阵先后作用于同一个点之后,这个点会原封不动,因为所有变换都走回去了。

如果两个矩阵M1,M2互逆,那么对点p作变换,就有如下结果

M1×p=p'

M2×p'=p

连着写就是

M1×(M2×p)=p

前面又说过,矩阵乘法满足结合律,因此可以改成

(M1×M2)×p=p

那么,M1×M2是个什么东西呢?

如果大家还记得我7个月前写的连载六,那么就应该知道M1×M2是个不让对象产生任何变化的,嗯,单位矩阵了。

然后我们把连载六里的矩阵乘法公式搬过来。

让左侧的两个矩阵互逆,就是使右侧等于单位矩阵。

同时,我们是要求其中一个矩阵的逆矩阵,因此一个为已知,一个为未知,为便于查看,我们把其中一个矩阵的字母改为大写,同时把所有下标去掉。

 

然后,右侧矩阵等于单位矩阵,即可列出如下方程组(大写为常量,小写为未知数):

这个方程组有6个方程,包含6个未知数,对于初中生来说也是挺蛋疼的。但仔细观察会发现,每个方程都只有两个未知数,而且刚好每两个方程所出现的未知数都一模一样,因此每两个方程都能组成一个二元一次方程组。

好了,这样就清晰多了,二元一次方程组,相信初中生都能解出来了吧,嘿嘿!

过程就省略了,我直接给出它们的解:

6个未知数的分母惊人的一致,数学家们在发现了这样的一个规律之后,就定义了行列式来表示这种形式的分母,然后慢慢地,数学领域就发展出了线性代数这样的一门分支学科,并为此发明出更多更高逼格的术语,让初学者为之懵逼。而事实上,那些高逼格的术语都是从最简单的二元一次方程组逐步建立起来的。

以前的数学家大概不像现在的我们那么爱装逼,他们会把这套体系推广到更多元的一次方程组中,从而为多元一次方程组的求解提供了更便捷且更通用的方案。不然遇到更多未知数的方程,我们又得像本文那样手动算一遍,而且未知数越多,运算量也越大,我们也越蛋疼。

线性代数我也是半吊子,也不是我这个系列教程的重点,想要进一步学习的朋友,自己找线性代数的教材慢慢琢磨就好了。

又写长了,那逆矩阵的代码实现我放到下一篇去吧,实现完了我也会把它用到45度地图的案例上进行演示,然后就会教大家如何扩展到任意角度并且砖块宽高不等的斜地图上,然后你们会发现,矩阵这工具真的越来越好用,然后,然后就没有然后了,让我们下篇见,白白!

猜你喜欢

转载自blog.csdn.net/iloveas2014/article/details/82930946
今日推荐