高等代数/线性代数-矩阵法求解齐次方程组
摘要
大家都知道,矩阵法求解方程组时需要对矩阵做行变换或者列变换(就是化成对角是1,下三角全是0的样子),这一步其实是比较头疼的。可能是我学识尚浅,没有找到python、R和Matlab对于这个小步骤的编程方法或者包(调包侠是我没错了(doge))。因此写下这一篇博客记录一下。
背景
在小学四年级左右,我们就已经开始学习如何解方程。先是学一元一次方程,再是二元一次,后面多元一次。再后来,初中就学习一元二次方程,接触一元多次方程。今天给大家聊聊多元一次方程的解法。此外,我们还接触了齐次方程和非齐次方程。直到上大学,学习了高等代数,知道有矩阵、行列式这种好东西之后,才对方程组有了更加深入的了解。
今天跟大家分享一段基于python实现矩阵法求解齐次方程组的代码。
基本方法
假设现在要解一个方程组:
{ x 1 − x 2 + x 3 = 0 x 2 + x 3 − x 4 = 0 4 x 1 + x 2 − x 3 − x 4 = 0 x 1 − 2 x 2 + x 4 = 0 (1) \begin{cases} x_1-x_2+x_3=0\\ x_2+x_3-x_4=0\\ 4x_1+x_2-x_3-x_4=0\\ x_1-2x_2+x_4=0\\ \end{cases} \tag{1} ⎩⎪⎪⎪⎨⎪⎪⎪⎧x1−x2+x3=0x2+x3−x4=04x1+x2−x3−x4=0x1−2x2+x4=0(1)
我们一般会想到未知量相互转换代入的方法来算,这样的计算思想和方法比较简单,但是未知量数量越多,计算量会越大。我算了一下,答案是:
{ x 1 = 1 5 a x 2 = 1 3 a x 3 = 1 2 a x 4 = a (2) \begin{cases} x_1=\frac{1}5a\\ x_2=\frac{1}3a\\ x_3=\frac{1}2a\\ x_4=a \end{cases} \tag{2} ⎩⎪⎪⎪⎨⎪