线性方程组的数值解法实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线性方程组的数值解法
实验
题目
用Gauss消元法和Seidel迭代法求线性方程组的解。
实验目的
通过本次实验了解Gauss消元法和Seidel迭代法的基本原理,掌握其算法,学会用Matlab编程进行计算,并能用这些方法解决实际问题。
Gauss 顺序消元法的基本原理算法:
(1)输入:,.
A b
(2)对1,2,,1
k n
=⋅⋅⋅-做
1)if0
kk
a=then输出算法失败信息,停机;
2)对1,,
i k n
=+⋅⋅⋅做
1/;
ik ik ik kk
a l a a
←=
2;
i i ik k
b b l b
=-
3对1,,
j k n
=+⋅⋅⋅做;
ij ij ik kj
a a l a
=-
(3)if0
nn
a=then输出算法失败信息,并停机else做
1)/;
n n n nn
b x b a
←=
2)对1,,2,1
i n
=-⋅⋅⋅做
1
()/;
n
i i i ij j ii
j i
b x b a x a
=+
←=-∑
(4)输出方程组的解.X
流程图见附页
Seidel 迭代法的基本原理算法:
(1)输入:,;
A b
(2)输入:初始解向量
;x
(3)对1,2,,
i n
=⋅⋅⋅做
1)
1
()/;
n
i i ij j ii
j
j i
y b a x a
=
≠
=-∑
2);
i i i
e y x
=-
3);
i i
x y
=
(4)if
1
{||}
max i
i n
eε
≤≤
i x i n =⋅⋅⋅停机;else返回第(3)步。 Gauss 顺序消元法的实验步骤步骤: (1)利用Gauss顺序消元法设计主程序: ①根据RB RA -的值判断方程组是否有解,当RB RA >时方程组无解,当RB RA n ==时方程组有唯一解,当RB RA n =<时,方程组有无穷多解; ②根据公式 (1)()() (1)()() (,1,,) (1,,) k k k ij ij ik kj k k k i i ik k a a l a i j k n b b l b i k n + + =-=+⋅⋅⋅ =-=+⋅⋅⋅ 将增广矩阵[,] B A b =化为上三角形矩阵; (2)建立. backsub m文件; (3)调用. backsub m文件,在Matlab命令窗口输入,A b矩阵,再输入[,,,](,) RA RB n X gaus A b =,进行Matlab实现得出方程的解。 Seidel 迭代法的实验步骤步骤: (1)利用Seidel迭代法设计主程序: ①确定精确度;ε ②当< err relerr εε <或时, (ⅰ)若=1, j则 X(1)=(b(1)-A(1,2:n)*P(2:n))/A(1,1); (ⅱ)若=, j n则 X(n)=(b(n)-A(n,1:n-1)*(X(1:n-1))')/A(n,n); (ⅲ)对于2,3,,1 j n =⋅⋅⋅- X(j)=(b(j)-A(j,1:j-1)*X(1:j-1)'-A(j,j+1:n)*P(j+1:n))/A(j,j); (2)在Matlab命令窗口输入 ,, A b x矩阵,再输入 (,,,0.0005,15) Seidel A b x,进行Matlab实现得出方程的解,输出X。 Gauss 顺序消元法的Matlab 原代码 Gauss 顺序消元法的实验结果在Matlab命令窗口输入: A=[-2 1 1;1 -2 1;1 1 -2] ; [1;2;4]; b=- [,,,](,) RA RB n X gaus A b = A=[1 1 1;1 1 1;1 1 1] ; [1;1;1]; b= [,,,](,) RA RB n X gaus A b = 结果显示: 在Matlab命令窗口输入: A=[2 1 1;1 2 1;1 1 2] ; b= [1;2;4]; = [,,,](,) RA RB n X gaus A b 结果显示: