Gauss Method是通过矩阵行初等变换,逐步消元变量的方式计算线性方程组的解;Gauss-Jordan Method是通过行初等变换,求取线性方程组的逆矩阵的方式计算方程组的解。两者概念上稍有不同,算法时间复杂度一致。
1. Gauss Method 求解线性方程组
上一篇博客讲到高斯消元法求解线性方程组,其Matlab代码也相应地开源到Github。本文目的有两个,其一,形式化表示高斯消元法,其二,对比介绍高斯-若尔当消元法。
步骤 1.1. 线性方程组问题描述
给定线性方程组如下,
{ x 1 + x 2 = 5 2 x 1 + 3 x 2 = 14 \left\{\begin{matrix} x_1+x_2=5\\ 2x_1+3x_2=14 \end{matrix}\right. {x1+x2=52x1+3x2=14
表示成增广矩阵如下,
(
1
1
⋮
5
2
3
⋮
14
)
\left ( \begin{matrix} 1 & 1 & \vdots & 5\\ 2 & 3 & \vdots & 14 \end{matrix} \right )
⎝⎛1213⋮⋮514⎠⎞
步骤 1.2. 高斯消元法消元对角线第一个元素
Matlab代码如下,其中GaussianElimination函数请下载,
A=[
1 1 5
2 3 14
];
leftlabel=1:2;
toplabel=1:2;
[return_a, return_b, return_c] = GaussianElimination(A,leftlabel,toplabel,1,1)
计算得到如下,
(
1
−
1
⋮
−
5
2
1
⋮
4
)
\left ( \begin{matrix} 1 & -1 & \vdots & -5\\ 2 & 1 & \vdots & 4 \end{matrix} \right )
⎝⎛12−11⋮⋮−54⎠⎞
步骤 1.3. 高斯消元法消元对角线第二个元素
Matlab代码如下,
A=[
1 -1 -5
2 1 4
];
leftlabel=1:2;
toplabel=1:2;
[return_a, return_b, return_c] = GaussianElimination(A,leftlabel,toplabel,2,2)
计算得到如下,
(
3
−
1
⋮
−
1
−
2
1
⋮
−
4
)
\left ( \begin{matrix} 3 & -1 & \vdots & -1\\ -2 & 1 & \vdots & -4 \end{matrix} \right )
⎝⎛3−2−11⋮⋮−1−4⎠⎞
步骤 1.4. 增广矩阵右边系数取负得解
增广矩阵右边系数取负数,得到线性方程组的解。
{
x
1
=
1
x
2
=
4
\left\{\begin{matrix} x_1=1\\ x_2=4 \end{matrix}\right.
{x1=1x2=4
2. Gauss-Jordan Method (高斯-若尔当消元法) 求解线性方程组
步骤 2.1. 线性方程组问题描述
给定线性方程组如下,
{ x 1 + x 2 = 5 2 x 1 + 3 x 2 = 14 \left\{\begin{matrix} x_1+x_2=5\\ 2x_1+3x_2=14 \end{matrix}\right. {x1+x2=52x1+3x2=14
表示成
n
×
n
n \times n
n×n矩阵如下,
(
1
1
2
3
)
\left ( \begin{matrix} 1 & 1\\ 2 & 3 \end{matrix} \right )
(1213)
步骤 2.2. 高斯消元法消元对角线第一个元素
Matlab代码如下,
A=[
1 1
2 3
];
leftlabel=1:2;
toplabel=1:2;
[return_a, return_b, return_c] = GaussianElimination(A,leftlabel,toplabel,1,1)
计算得到如下,
(
1
−
1
2
1
)
\left ( \begin{matrix} 1 & -1\\ 2 & 1 \end{matrix} \right )
(12−11)
步骤 2.3. 高斯消元法消元对角线第二个元素
Matlab代码如下,
A=[
1 -1
2 1
];
leftlabel=1:2;
toplabel=1:2;
[return_a, return_b, return_c] = GaussianElimination(A,leftlabel,toplabel,2,2)
计算得到如下,
(
3
−
1
−
2
1
)
\left ( \begin{matrix} 3 & -1\\ -2 & 1 \end{matrix} \right )
(3−2−11)
步骤 2.4. 逆矩阵乘以方程组右边系数得到解
( x 1 x 2 ) = ( 3 − 1 − 2 1 ) ⋅ ( 5 14 ) = ( 1 4 ) \left ( \begin{matrix} x_1\\ x_2 \end{matrix} \right )=\left ( \begin{matrix} 3 & -1\\ -2 & 1 \end{matrix} \right ) \cdot \left ( \begin{matrix} 5\\ 14 \end{matrix} \right )=\left ( \begin{matrix} 1\\ 4 \end{matrix} \right ) (x1x2)=(3−2−11)⋅(514)=(14)
3. 对比
给定 n × n n\times n n×n方程组系数矩阵,Gauss Method和Gauss-Jordan Method的算法复杂度都是 O ( n ) O(n) O(n)次的消元/矩阵行初等变换,其中,Gauss-Jordan Method的算法最后多了一个矩阵乘法运算。
参考资料
[1. 高斯-若尔当消元法] http://www.faculty.umassd.edu/michele.mandrioli/424book/fchm9.4.html
备注
[备注一] 初稿,2019年06月26号,测试通过。