高斯消去法高斯塞德尔迭代法

数值计算

高斯消去法和高斯-塞德尔迭代法

摘要

虽然已学过加减消元法、代入消元法、矩阵变换法和Cramer 法则等,但是无法满足实际计算需要,故在此讨论在计算机上实现的有效而实用的解法。线性方程组的解法大致分2类:直接法(高斯消去法)和迭代法(高斯-赛德尔迭代法),在此对着此类算法进行比较分析。

一、算法设计

当计算线性方程组如下时,

⎧a 11x 1+a 12x 2+ +a 1n x n =b 1

⎪a x +a x + +a x =b ⎪2112222n n 2

⎪⎩a n 1x 1+a n 2x 2+ +a nn x n =b n

为方便起见,常将线性方程组表示成矩阵形式

Ax =b

(1-1)

⎡b 1⎤⎥ b =⎢ ⎢⎥⎢⎣b n ⎥⎦

其中

⎡a 11 a 1n ⎤

⎢⎥A =⎢ ⎥ ⎢a n 1 a nn ⎥⎣⎦

⎡x 1⎤

⎥ x =⎢ ⎢⎥⎢⎣x n ⎥⎦

并始终假定A 是非奇异的,即方程组的解存在且唯一。

1.1高斯消去法

消去法就是按特定顺序进行的矩阵初等变换法,当消元按自然顺序进行时,称为

高斯顺序消去法。一般情况下的高斯顺序消去法的计算机算法如下,现将方程组(1-1)的增广矩阵记作

(0)⎡a 11 a 1(0)n ⎢

(0)(0)⎢a n a nn 1⎢⎣

假设经k-1步消元后,增广矩阵化为

(0)⎡a 11⎢⎢⎢⎢⎢⎢⎢⎢⎣

(0)

a 12(1)a 22

⎤a 1(0)n +1⎥ ⎥

(0)⎥a nn +1⎥⎦

a 1(0)n

(1)a 2n

(k -1) (k -1)

a kk a kn

(k -1) (k -1) a nk a nn

⎤a 1(0)n +1

(1)⎥a 2n +1⎥ ⎥

(k -1) ⎥a kn +1⎥ ⎥⎥(k -1)

a nn +1⎦⎥

(s )

其中a ij 的上标表示是由s 步消元得到的植。

(k -1) (k -1)

≠0,以第k 行为基础,将以后各行中的a ik 第k 步消元:设a kk 化为0,为此

先计算

(k -1) (k -1)

l ik =a ik /a kk

然后以第i 行减去第k 行乘以l ik ,即以

(k ) (k -1) (k -1)

a ij =a ij -l ik a kj

(j =k +1, , n +1)

(i =k +1, , n )

a 1(0)n

⎤a 1(0)n +1

⎥ ⎥(k -1) ⎥a kn +1

⎥ (k )

a k +1n +1⎥ ⎥⎥(k )

a nn +1⎥⎦

于是得

(0)

⎡a 11 ⎢

(k -1) ⎢a kk

⎢⎢⎢⎢⎢⎣

(k -1)

a kk +1

(k -1)

a kn

(k ) (k ) a k a k +1k +1+1n

(k ) a k +1n

(k )

a nn

经n-1步消元后,增广矩阵化为

(0)⎡a 11 a 1(0)n ⎢

(k -1) (k -1) ⎢a kk a kn

(n -1) ⎢a nn ⎣

自下往上逐步回代即可求得其解

(n -1) (n -1)

x n =a nn /a +1nn

n

⎤a 1(0)n +1

⎥ ⎥(k -1) ⎥ a kn +1

⎥ ⎥(n -1) ⎥a nn +1⎦

x k =(a

(k -1)

kn +1

-

j =k +1

∑a

(k -1) kj (k -1)

x j ) /a kk

(k =n -1, n -2, ,1)

由行列式的初等变换和矩阵初等变换的关系可知,顺序消元法的每一步系数行列

(0)(2)(n -1)

a 22 a nn 式之值不变,因此原方程组之系数行列式的值为a 11,可在求解过程中

逐步累乘求得。

1.2高斯消去法Matlab 程序设计

1.3高斯-塞德尔(Gauss-Seidel )迭代法

由于迭代法能充分避免系数矩阵中零元素的贮存与计算,因此特别适用于系数矩阵阶数很高而非零元极少的线性方程组。 高斯-塞德尔的迭代格式为

1⎧(k +1)

x =(⎪1

a 11

1⎪(k +1)

=(-a 21x 1(k +1) ⎪x 2

a 22⎨

⎪ ⎪

1⎪(k +1) (k +1)

x =(-a x n 11⎪n

a nn ⎩

或缩写为

x

(k +1) i

(k )

-a 12x 2(k )

-a 13x 3

- -

-

(k )

-a 1n x n

+b 1) +b 2) +b n )

(k )

-a 23x 3(k )

-a 2n x n

(k +1)

-a n 2x 2

(k +1)

-a n 3x 3

(k +1)

- -a nn -1x n -1

i -1n

1(k +1) =(-∑a ij x j -∑a ij x (j k ) +b i ) a 11j =1 j =i +1

(i =1, 2, , n )

将其写成矩阵形式为

x (k +1) =D -1[Lx (k +1) +Ux (k ) ]+D -1b

若把x (k +1) 解出来,则得等价的迭代公式

x (k +1) =(D -L ) -1Ux (k ) +(D -L ) -1b

M G =(D -L ) -1U

其中

⎡0⎤⎢-a ⎥0⎥ L =⎢21⎢ ⎥⎢⎥-a -a 0n 2⎣n 1⎦

⎡0-a 12 -a 1n ⎤⎢⎥0 -a 2n ⎥U =⎢ ⎢ ⎥⎢⎥

0⎣⎦⎡a 11⎤⎥ D =⎢ ⎢⎥

⎢a nn ⎥⎣⎦

M G 为高斯-塞德尔的迭代矩阵。

1.4高斯-塞德尔(Gauss-Seidel )迭代法Matlab 程序设计

二、数值试验

用高斯消去法和高斯-塞德尔迭代法求解方程组

⎡0.00173.85671.10233.1243⎤⎡x 1⎤⎡8.0904⎤⎢0.12341.23432.30441.6257⎥⎢⎥⎢5.2878⎥⎢⎥⎢x 2⎥=⎢⎥ ⎢9.9274-4.92588.5042-3.4253⎥⎢x 3⎥⎢9.4805⎥⎢⎥⎢⎥⎢⎥7.54339.999510.6728-7.014721.2009x ⎢4⎦⎥⎣⎣⎦⎣⎦

2.1高斯消去法在计算机上求解结果如下

2.2高斯-赛德尔迭代法在计算机上求解结果如下

2.3计算机上求解结果分析

有上述结果可知当用直接法可求出线性方程组的解得时候,迭代法却不一定可行。只有当该迭代收敛时才有解,亦即是矩阵M 的谱半径ρ(M ) =max λi

1≤i ≤n

该迭代才收敛,才可用迭代法求解线性方程组的解。

三、参考文献

【1】曹德欣,曹璎珞,计算方法,中国矿业大学出版社,2001。 【2】王正盛,MATLAB 与科学计算,国防工业出版社,2011。

数值计算

高斯消去法和高斯-塞德尔迭代法

摘要

虽然已学过加减消元法、代入消元法、矩阵变换法和Cramer 法则等,但是无法满足实际计算需要,故在此讨论在计算机上实现的有效而实用的解法。线性方程组的解法大致分2类:直接法(高斯消去法)和迭代法(高斯-赛德尔迭代法),在此对着此类算法进行比较分析。

一、算法设计

当计算线性方程组如下时,

⎧a 11x 1+a 12x 2+ +a 1n x n =b 1

⎪a x +a x + +a x =b ⎪2112222n n 2

⎪⎩a n 1x 1+a n 2x 2+ +a nn x n =b n

为方便起见,常将线性方程组表示成矩阵形式

Ax =b

(1-1)

⎡b 1⎤⎥ b =⎢ ⎢⎥⎢⎣b n ⎥⎦

其中

⎡a 11 a 1n ⎤

⎢⎥A =⎢ ⎥ ⎢a n 1 a nn ⎥⎣⎦

⎡x 1⎤

⎥ x =⎢ ⎢⎥⎢⎣x n ⎥⎦

并始终假定A 是非奇异的,即方程组的解存在且唯一。

1.1高斯消去法

消去法就是按特定顺序进行的矩阵初等变换法,当消元按自然顺序进行时,称为

高斯顺序消去法。一般情况下的高斯顺序消去法的计算机算法如下,现将方程组(1-1)的增广矩阵记作

(0)⎡a 11 a 1(0)n ⎢

(0)(0)⎢a n a nn 1⎢⎣

假设经k-1步消元后,增广矩阵化为

(0)⎡a 11⎢⎢⎢⎢⎢⎢⎢⎢⎣

(0)

a 12(1)a 22

⎤a 1(0)n +1⎥ ⎥

(0)⎥a nn +1⎥⎦

a 1(0)n

(1)a 2n

(k -1) (k -1)

a kk a kn

(k -1) (k -1) a nk a nn

⎤a 1(0)n +1

(1)⎥a 2n +1⎥ ⎥

(k -1) ⎥a kn +1⎥ ⎥⎥(k -1)

a nn +1⎦⎥

(s )

其中a ij 的上标表示是由s 步消元得到的植。

(k -1) (k -1)

≠0,以第k 行为基础,将以后各行中的a ik 第k 步消元:设a kk 化为0,为此

先计算

(k -1) (k -1)

l ik =a ik /a kk

然后以第i 行减去第k 行乘以l ik ,即以

(k ) (k -1) (k -1)

a ij =a ij -l ik a kj

(j =k +1, , n +1)

(i =k +1, , n )

a 1(0)n

⎤a 1(0)n +1

⎥ ⎥(k -1) ⎥a kn +1

⎥ (k )

a k +1n +1⎥ ⎥⎥(k )

a nn +1⎥⎦

于是得

(0)

⎡a 11 ⎢

(k -1) ⎢a kk

⎢⎢⎢⎢⎢⎣

(k -1)

a kk +1

(k -1)

a kn

(k ) (k ) a k a k +1k +1+1n

(k ) a k +1n

(k )

a nn

经n-1步消元后,增广矩阵化为

(0)⎡a 11 a 1(0)n ⎢

(k -1) (k -1) ⎢a kk a kn

(n -1) ⎢a nn ⎣

自下往上逐步回代即可求得其解

(n -1) (n -1)

x n =a nn /a +1nn

n

⎤a 1(0)n +1

⎥ ⎥(k -1) ⎥ a kn +1

⎥ ⎥(n -1) ⎥a nn +1⎦

x k =(a

(k -1)

kn +1

-

j =k +1

∑a

(k -1) kj (k -1)

x j ) /a kk

(k =n -1, n -2, ,1)

由行列式的初等变换和矩阵初等变换的关系可知,顺序消元法的每一步系数行列

(0)(2)(n -1)

a 22 a nn 式之值不变,因此原方程组之系数行列式的值为a 11,可在求解过程中

逐步累乘求得。

1.2高斯消去法Matlab 程序设计

1.3高斯-塞德尔(Gauss-Seidel )迭代法

由于迭代法能充分避免系数矩阵中零元素的贮存与计算,因此特别适用于系数矩阵阶数很高而非零元极少的线性方程组。 高斯-塞德尔的迭代格式为

1⎧(k +1)

x =(⎪1

a 11

1⎪(k +1)

=(-a 21x 1(k +1) ⎪x 2

a 22⎨

⎪ ⎪

1⎪(k +1) (k +1)

x =(-a x n 11⎪n

a nn ⎩

或缩写为

x

(k +1) i

(k )

-a 12x 2(k )

-a 13x 3

- -

-

(k )

-a 1n x n

+b 1) +b 2) +b n )

(k )

-a 23x 3(k )

-a 2n x n

(k +1)

-a n 2x 2

(k +1)

-a n 3x 3

(k +1)

- -a nn -1x n -1

i -1n

1(k +1) =(-∑a ij x j -∑a ij x (j k ) +b i ) a 11j =1 j =i +1

(i =1, 2, , n )

将其写成矩阵形式为

x (k +1) =D -1[Lx (k +1) +Ux (k ) ]+D -1b

若把x (k +1) 解出来,则得等价的迭代公式

x (k +1) =(D -L ) -1Ux (k ) +(D -L ) -1b

M G =(D -L ) -1U

其中

⎡0⎤⎢-a ⎥0⎥ L =⎢21⎢ ⎥⎢⎥-a -a 0n 2⎣n 1⎦

⎡0-a 12 -a 1n ⎤⎢⎥0 -a 2n ⎥U =⎢ ⎢ ⎥⎢⎥

0⎣⎦⎡a 11⎤⎥ D =⎢ ⎢⎥

⎢a nn ⎥⎣⎦

M G 为高斯-塞德尔的迭代矩阵。

1.4高斯-塞德尔(Gauss-Seidel )迭代法Matlab 程序设计

二、数值试验

用高斯消去法和高斯-塞德尔迭代法求解方程组

⎡0.00173.85671.10233.1243⎤⎡x 1⎤⎡8.0904⎤⎢0.12341.23432.30441.6257⎥⎢⎥⎢5.2878⎥⎢⎥⎢x 2⎥=⎢⎥ ⎢9.9274-4.92588.5042-3.4253⎥⎢x 3⎥⎢9.4805⎥⎢⎥⎢⎥⎢⎥7.54339.999510.6728-7.014721.2009x ⎢4⎦⎥⎣⎣⎦⎣⎦

2.1高斯消去法在计算机上求解结果如下

2.2高斯-赛德尔迭代法在计算机上求解结果如下

2.3计算机上求解结果分析

有上述结果可知当用直接法可求出线性方程组的解得时候,迭代法却不一定可行。只有当该迭代收敛时才有解,亦即是矩阵M 的谱半径ρ(M ) =max λi

1≤i ≤n

该迭代才收敛,才可用迭代法求解线性方程组的解。

三、参考文献

【1】曹德欣,曹璎珞,计算方法,中国矿业大学出版社,2001。 【2】王正盛,MATLAB 与科学计算,国防工业出版社,2011。


相关内容

  • 数值计算基础
  • 数值计算基础 实验指导书 2010年 目录 实验一 直接法解线性方程组的 ................................ 1 实验二 插值方法 ........................................... 10 实验三 数值积分 ............. ...

  • 线性方程组的解法
  • 第五章 线性代数方程组的解法 分两种方法: 1.直接法;  2.迭代法. §1.直接法 (1) 高斯消去法:(基本思想)将给定的线性代数方程组转化为具有相同解的三角形方程组求解. *** x1b1*a11a12La1a11a12La1nx1b1n axb ...

  • 数值分析讲义--线性方程组的解法
  • 第三章 线性方程组的解法 3.0 引 言 重要性:解线性代数方程组的有效方法在计算数学和科学计算中具有特 殊的地位和作用. 如弹性力学.电路分析.热传导和振动.以及社会科学及定量分析商业经济中的各种问题. 分类:线性方程组的解法可分为直接法和迭代法两种方法. (a) 直接法:对于给定的方程组,在没有 ...

  • 雅可比迭代法和高斯-塞德尔迭代法求解线性方程组
  • 实验报告内容 一 实验目的与要求(实验题目) 1.分别利用雅可比迭代法和高斯-塞德尔迭代法求解以下线性方程组 ⎧8x 1-3x 2+2x 3=20 ⎪⎨4x 1+11x 2-x 3=33 ⎪6x +3x +12x =3623⎩1 使得误差不超过10 -4 2. 用不动点迭代法求方程的实根: x 3+ ...

  • 线性方程组的迭代解法及收敛分析
  • 河南科技学院 2015届本科毕业论文 论文题目:线性方程组的三种迭代解法 及收敛分析 学生姓名: 韦成州 所在院系: 数学科学学院 所学专业: 信息与计算科学 导师姓名: 李巧萍 完成时间: 2015年5月20日 线性方程组的三种迭代解法及收敛分析 摘 要 对于线性方程组的迭代解法,本文重点讨论雅可 ...

  • 高斯-赛德尔迭代法
  • #include using namespace std; int main() { int n,i,j,k=0,max; float error,p,e; cout cin>>n; float A[n][n+1],B[n][n+1],X[n],Y[n]; cout for(j=0;j ...

  • 计算方法实验报告
  • 中北大学信息商务学院 计算方法实验报告 学生姓名: 刘昊文 学号: 1603042130 学 院: 中北大学信息商务学院 专 业: 电气工程及其自动化 指导教师: 薛晓健 2017 年 04 月 19 日 实验一:非线性方程的近似解法 1.实验目的 1.掌握二分法和牛顿迭代法的原理 2. 根据实验内 ...

  • 有无穷解的线性方程组的迭代法_田学全
  • 第16卷 第2期塔 里 木 农 垦 大 学 学 报Vol.16No.2 2004年6月JournalofTarimUniversityofAgriculturalReclamationJun.2004 ① 文章编号:1009-0568(2004)02-0055-02 有无穷解的线性方程组的迭代法 田 ...

  • 化学计量学
  • 南京工业大学 化学计量学 试题(A )卷(闭) 2012-2013学年第二学期 使用班级班级 学号 姓名 一.单项选择题(每小题2分,共30分) 1. 相对于迭代法或牛顿切线等算法,二分法解一元方程的最大优点是( ) A. 程序最简单 B. 运算速度一定最快 C. 初值可随意设置 D. 最可靠,一定 ...