线性方程组的数值算法C语言实现(附代码)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

线性方程组AX=B 的数值计算方法实验

一、 实验描述:

随着科学技术的发展,线性代数作为高等数学的一个重要组成部分,

在科学实践中得到广泛的应用。本实验的通过C 语言的算法设计以及编程,来实现高斯消元法、三角分解法和解线性方程组的迭代法(雅可比迭代法和高斯-赛德尔迭代法),对指定方程组进行求解。

二、 实验原理:

1、高斯消去法:

运用高斯消去法解方程组,通常会用到初等变换,以此来得到与原系数矩阵等价的系数矩阵,达到消元的目的。初等变换有三种:(a)、(交换变换)对调方程组两行;(b)、用非零常数乘以方程组的某一行;(c)、将方程组的某一行乘以一个非零常数,再加到另一行。

通常利用(c),即用一个方程乘以一个常数,再减去另一个方程来置换另一个方程。在方程组的增广矩阵中用类似的变换,可以化简系数矩阵,求出其中一个解,然后利用回代法,就可以解出所有的解。 2、选主元:

若在解方程组过程中,系数矩阵上的对角元素为零的话,会导致解出的结果不正确。所以在解方程组过程中要避免此种情况的出现,这就需要选择行的判定条件。经过行变换,使矩阵对角元素均不为零。这个过程称为选主元。选主元分平凡选主元和偏序选主元两种。平凡选主元:

如果()0p pp a ≠,不交换行;如果()0p pp a =,寻找第p 行下满足()

0p pp a ≠的第一

行,设行数为k ,然后交换第k 行和第p 行。这样新主元就是非零主元。偏序选主元:为了减小误差的传播,偏序选主元策略首先检查位于主对角线或主对角线下方第p 列的所有元素,确定行k ,它的元素绝对值最大。然后如果k p >,则交换第k 行和第p 行。通常用偏序选主元,可以减小计算误差。 3、三角分解法:

由于求解上三角或下三角线性方程组很容易所以在解线性方程组时,可将系数矩阵分解为下三角矩阵和上三角矩阵。其中下三角矩阵的主对角线为1,上三角矩阵的对角线元素非零。有如下定理:

如果非奇异矩阵A 可表示为下三角矩阵L 和上三角矩阵U 的乘积: A LU = (1) 则A 存在一个三角分解。而且,L 的对角线元素为1,U 的对角线元素非零。得到L 和U 后,可通过以下步骤得到X :

(1)、利用前向替换法对方程组LY B =求解Y 。 (2)、利用回代法对方程组UX Y =求解X 。

4、雅可比迭代:

考察一般形式的线性方程组:

,

1,2,3,N ij j i j

a x

b i N ==∑L L (2)

设从(2)中分离变出变量i X 将它改写成:

11

1,2,3,N

i i ij j

j ii

j i x b a x i N a =≠⎛⎫ ⎪

=

-= ⎪ ⎪⎝⎭

∑L L (3)

据此建立雅可比迭代公式:

(k 1)

(k)111,2,3,N i i ij j

j ii j i x b a x i N a +=≠⎛⎫ ⎪=-= ⎪ ⎪⎝⎭

∑L L (4)

5、高斯-赛德尔迭代:

通过对雅可比迭代的观察,由于通常1k x +被认为是比k x 更好的x 的

近似值,所以在计算1k y +时用1k x +来替换k x 是合理的。所以对雅可比迭代进行了改进,得到了高斯-赛德尔迭代,其收敛速度更快。它的迭代公式为: (k 1)

(k 1)111,2,3,N

i i ij j

j ii j i x b a x i N a ++=≠⎛⎫ ⎪=-= ⎪ ⎪⎝⎭

∑L L (5)

三、 实验内容:

1、许多科学应用包含的矩阵带有很多零。在实际情况中很重要的三角形线

性方程组有如下形式: 11121

11

22

23222

33

34

3221111

11N N N N N N N N N N N

N

d x c x b a x d x c x b a x d x c x b a x d x c x b a x d x b --------+=++=++=

+

+=+

=O

O O M (6)

构造一个程序求解三角形线性方程组。可假定不需要行变换,而且可用第k 行消去第k+1行的k x 。

2、使用C 语言编写一个程序求解线性方程组AX B =,其中:

1357213500252631A -⎡⎤⎢⎥-⎢

⎥=⎢⎥⎢⎥---⎣⎦ 1234B ⎡⎤⎢⎥

⎢⎥=⎢⎥⎢⎥⎣⎦

3、使用2中的程序求解线性方程组AX B =,其中=1

j ij N N A a i -⨯⎡⎤==⎣⎦ ;而

且1

ij N B b ⨯⎡⎤=⎣⎦,11b N =当2i ≥时,1(i 1)/(i 1)N i b =--。对3,7,11N =的情

况分别求解。精确解为[]1111X '=L

。对得到的结果与精确解的

差异进行解释。

4、修改2中的程序,使得它可以通过重复求解N 个线性方程组

J J AC E = 其中1,2,,J N =L L (7)

来得到1A - ,

1212[C C C ][E E E ]N N A =L L (8)

而且

112[C C C ]N A -=L (9)

5、设有如下三角线性方程组,而且系数矩阵具有严格的对角优势:

11121

11

22

23222

33

34

3221111

11N N N N N N N N N N N

N

d x c x b a x d x c x b a x d x c x b a x d x c x b a x d x b --------+=++=++=

+

+=+

=O

O O M (10)

(1)、根据解线性方程组的迭代法原理,设计一个算法来求解上述方程

组,算法必须有效利用系数矩阵的稀疏性。

(2)、用(1)中的程序解下列的三角线性方程组:

(a)121232

343

4548

49

50

49

50

43+43+43

+

434343

m m m m m m m m m m m m m m m m +=+=+=+

=++=+=M M M M (b)121232343

4548

49

50

49

50

41+42+41+

424142

m m m m m m m m m m m m m m m m +=+=+=+

=++=+=M M M M

相关文档
最新文档