解线性代数方程组的直接法
?/p>
Gauss
主元消去?/p>
最近学习数值分析,为了能够边学习边训练编程,笔者决定对于所学算法一
一分析记录?/p>
也便于自己以后复习时候的查阅?/p>
在这里顺便和大家共享一下我?/p>
学习经验,共?/p>
今天主要写的是求解线性方程组的直接法之一
Gauss
主元消去?/p>
的基本算
法步骤和?/p>
C++
编程实现的具体过程,
内容比较简单,
代码已经经过测试?/p>
可以
直接使用?/p>
首先就是
Gauss
顺序消去法的基本原理?/p>
主元消去法只是在顺序消元法进行前采取选主元措施?/p>
对于
Ax=b
这样一非齐次线性方程组,要求解
x
列向量,利用线性代数方?/p>
的知识,我们可以?/p>
(A|b)
这样一个增广矩阵做初等行变换,化为矩阵
A
下三?/p>
为零的形式。这个时候再进行回代操作就可以计算出?/p>
x
列向量啦?/p>
例如?/p>
对矩?/p>
Ax=b;
11
12
13
1
21
22
23
2
1,1
1,2
1,3
1,
,1
,2
,3
,
A
n
n
n
n
n
n
n
n
n
n
n
n
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?
...
...
=
...
...
...
,
1
2
1
...
n
n
b
b
b
b
b
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
则对?/p>
A
的增广矩阵如下:
1
11
12
13
1
21
22
23
2
2
1,1
1,2
1,3
1,
1
,1
,2
,3
,
...
...
...
(A
|
b)
...
...
...
n
n
n
n
n
n
n
n
n
n
n
n
n
n
b
a
a
a
a
a
a
a
a
b
a
a
a
a
b
a
a
a
a
b
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?
第一步:?/p>
(
A|b)
的第一行为基,对的?/p>
2
行到?/p>
n
行进行初等行变换?/p>
假设
11
0
a
?/p>
,将?/p>
1
行的
1
11
i
a
a
?
倍加到第
i
?/p>
(i=2,3,
?/p>
,n)
,通式?/p>
(2)
(1)
1
1
11
(j
1,
2,...,
n,
n
1)
i
ij
ij
j
a
a
a
a
a
?/p>
?
?/p>
?/p>
注意这里?/p>
j
是从
1
?/p>
n+1
取值的?/p>
a
ij
的上标(
1
?/p>
,
?/p>
2
)只是用来表示数?/p>
a
ij
前一时刻和当前时刻的?/p>
经过消元,增广矩?/p>
(A|b)
变成下面的形式: