数值分析课程设计
求解线性方程组
作者姓名:
学号:
指导教师
学院名称
理学院
专业名称
信息与计算科学
提交日期
2012年6月
一、问题的提出
分别用SOR方法和高斯消元的LU分解算法(lii=1, i=1,…,n)求解给定的线性方程组AX=B, 以感受迭代法和直接法的不同特点。
二、实验内容
自定义函数 SOR(A, B, w, MAXN, TOL),以实现SOR方法求解线性方程组AX=B,其中
A——系数矩阵;
B——常数列向量;
w——松弛因子;
MAXN——迭代的最大次数
TOL——达到的精度上限
返回值有以下四种可能:
-2:SOR方法不收敛;(不收敛的依据为的某个分量值超出区间[-108, 108]。)
-1:矩阵有一列全为0;
0:算法经过MAXN次迭代还未收敛;
k:SOR方法经k次迭代收敛,求得方程组的解向量X记录下来.
自定义函数Direct(A, B),以实现高斯LU分解的方法求解线性方程组AX=B,其中
A——系数矩阵;
B——常数列向量;
返回值有两种可能:
“LU psition failed.”:分解过程中U的对角线元素至少一个为0;
X:分解过程中
分别使用步骤1中定义的函数SOR(A, B, w, MAXN, TOL)和步骤2中定义的函数Direct(A, B)进行测试,记录返回值及X值(算法收敛或有效的情形, 保留4位小数):
测试1:
MAXN =1000,TOL =10-9,w分别取1, , , , , , ;
测试2:
MAXN =1000,TOL =10-9,w=1;
测试3:
MAXN =1000,TOL =10-9,w=;
测试4:
MAXN =1000,TOL =10-9,w=1, , , ;
测试5:: n阶Hilbert矩阵定义为
取n=3, MAXN =1000,TOL =10-9,w=1, , , ;
测试6:A为4阶Hilbert矩阵,MAXN =10000,TOL =10-6,w=1, , , , .
三、实验结果及分析
(一) SOR方法
1. SOR法分析:
(1)利用高斯SOR法可得迭代公式:
X1(k+1)=(1-w)X1(k)-w/4(-X2(k)-X4(k))
X2(k+1)=(1-w)X2(k)-w/4(-X1(k+1)-X3(k)-X5(k)-5)
X3(k+1)=(1-w)X3(k)-w/4(-X2(k+1)-X6(k))
X4(k+1)=(1-w)X4(k)-w/4(-X1(k+1)-X5(k)-6)
X5(k+1)=(1-w)X5(k)-w/4(-X2(k+1)-X4(k+1)-X(k+1)+2)
X6(k+1)=(1-w)X6(k)-w/4(-X3(k)-X5(k)-6);
将松弛系数w的不同德值代入计算出X的值。
利用迭代使|X(k+1)-X(k)|<e(e为精度,e=10^(-9))。
(2)由于矩阵出现了,一列为0,所以不能使用迭代,在程序中会出现r=-1.
(3)X1(k+1)=(1-w)X1(k)-w/3(-X2(k)+3X3(k))
X2(k+1)=(1-w)X2(k)-w/6(3X1(k+1)+3X3(k))
X3(k+1)=(1-w)X3(k)-w/3(3X1(k+1)+3X2(k+1))
利用迭代使|X(k+1)-X(k)|<e(e为精度,e=10^(-9))。
(4)将方程组变为:
X1+0X2+2X3+0X4+3X5+0X6+4X7=3
3X1-1X2++8X4+++0X7=8
3X1+3X2+++++X7=10
5X1+2X2++8X4+++=12
X1-4X2-+9X4+++=9
+++8X4+++0X7=6
--+3X3+2X4+0X5+X6-X7=5
迭代公式为:
X1(k+1)=(1-w)X1(k)-w(2X3(k)+3X5(k)+4X7(k)-3)
X2(k+1)=(1-w)X2(k)+w(3X1(k+1)+(k)+8X4(k)+(k)+(k)+X7(k)-10)
X3(k+1)=(1-w)X3(k)+w/(3X1(k+1)+3X2(k+1)+
数值分析课程设计(求解线性方程组) 来自淘豆网m.daumloan.com转载请标明出处.