现在我们给出一个方程组,然后尝试用矩阵来求解。
在连载十六中,我们给出了曲线类型的判断法则:
Δ<0时,方程为椭圆(包括正圆)
Δ>0时,方程为双曲线
Δ=0时,方程为抛物线
其中Δ=B^2-4AC
现在我们来判断给定的两条方程的曲线类型
第一条方程,A=1,B=-2,C=1,Δ=B^2-4AC=(-2)^2-4*1*1=0,为抛物线(或者叫二次贝塞尔曲线)
第二条方程,A=1,B=3,C=2,Δ=B^2-4AC=3^2-4*1*2=1,为双曲线
双曲线的标准方程为x^2-y^2=1,消元也会产生根号,所以我们用第一条方程做矩阵变换。
然后,我们用连载十六的方法,通过旋转一个θ角消去xy项,使其向标准抛物线靠拢
把旋转角的计算方法搬过来。
然后有θ=-φ/2
代入到cosφ中,得到
φ=90度,然后θ=-φ/2=-45度
所以我们套-45度的逆矩阵到第一条方程中即可。
现在我们是手算,所以完全可以把前面的系数去掉以简化,只要后面的方程用同样的矩阵即可。
代入到第一条方程,得到
虽然不是标准方程,但是似乎没有必要再往下化简了。因为用Y表示X的式子已经非常简洁清晰
然后我们用
代入到第二条方程,得到
然后用
进行代入
这个方程我就不手动解了,直接扔到四次方程的类中求解,得到如下结果:
然后通过
把x给算出来。
最后,运用
即可把4组解都求出来。
虽然演算过程看起来挺长,但却通过一个简单的换元公式巧妙地躲开了开方和去根号的运算。而这个换元公式看似简单,实则蕴含了丰富的矩阵思想,是矩阵史诗级玩法返璞归真的最好见证!
我们可以用矩阵来解二元二次方程组了,那么更高次数的方程我们可以解出来么?就我目前的认知范围来看,是没有办法完全做到的。原因在于三次曲线并不能通过矩阵变成固定的标准曲线。如下图,同样是三次贝塞尔曲线,它们之间就无法用一个矩阵实现转换。
但是也能借助这一思路进行简化,比如化简其中一条为y=x^3,然后代入到另一条中。
事实上,一元三次方程的卡尔丹公式正是矩阵变换的体现。在去掉二次项的时候,我们用到了如下的换元公式。
x和y之间虽然只是相差一个常数,但若站在矩阵的角度来思考,它不正是一个平移的矩阵吗?
至此,矩阵史诗级玩法系列教程已经接近尾声。但是我并没有在这篇的标题上加上“完”字,因为更返璞归真的事情还在后面。我将给大家布置一个小作业,其中包含实现代码,但是核心算法的注释一句不写,大家如果可以从中看出其实现原理,那恭喜你,你已经毕业了!