线性方程组的数值算法C语言实现(附代码)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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