最优化理论及其MATLAB编程实现 -- 4高斯消元法原理和应用IV

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 ) 1213514

步骤 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 ) 121154

步骤 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 ) 321114

步骤 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 ) (1211)

步骤 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 ) (3211)

步骤 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)=(3211)(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号,测试通过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值