实验报告二
题目: Gauss列主元消去法
摘要:求解线性方程组的方法很多,主要分为直接法和间接法。本实验运用直接法的Guass消去法,并采用选主元的方法对方程组进行求解。
前言:(目的和意义)
1. 学习Gauss消去法的原理。 2. 了解列主元的意义。
3. 确定什么时候系数阵要选主元 数学原理:
由于一般线性方程在使用Gauss消去法求解时,从求解的过程中可以看到,若=0,则必须进行行交换,才能使消去过程进行下去。有的时候即使0,但是其绝对值非常小,由于机器舍入误差的影响,消去过程也会出现不稳定得现象,导致结果不正确。因此有必要进行列主元技术,以最大可能的消除这种现象。这一技术要寻找行r,使得 并将第r行和第k行的元素进行交换,以使得当前的的数值比0要大的多。这种列主元的消去法的主要步骤如下: 1. 消元过程
对k=1,2,…,n-1,进行如下步骤。
1) 选主元,记
若很小,这说明方程的系数矩阵严重病态,给出警告,提示结果可能不对。
2) 交换增广阵A的r,k两行的元素。
(j=k,…,n+1)
3) 计算消元
(i=k+1,…,n; j=k+1,……,n+1)
2. 回代过程
对k= n, n-1,…,1,进行如下计算 至此,完成了整个方程组的求解。 程序设计:
本实验采用Matlab的M文件编写。 Gauss消去法源程序:
clear
a=input('输入系数阵:>>\\n') b=input('输入列阵b:>>\\n') n=length(b); A=[a b] x=zeros(n,1); %%%函数主体
for k=1:n-1;
%%%是否进行主元选取
if abs(A(k,k)) yzhuyuan=1; else yzhuyuan=0; end if yzhuyuan; %%%%选主元 t=A(k,k); for r=k+1:n; if abs(A(r,k))>abs(t) p=r; else p=k; end end %%%交换元素 if p~=k; for q=k:n+1; s=A(k,q); A(k,q)=A(p,q); A(p,q)=s; end end end %%%判断系数矩阵是否奇异或病态非常严重 if abs(A(k,k))< yipusilong disp(‘矩阵奇异,解可能不正确’) end %%%%计算消元,得三角阵 for r=k+1:n; m=A(r,k)/A(k,k); for q=k:n+1; A(r,q)=A(r,q)-A(k,q)*m; end end end %%%%求解x x(n)=A(n,n+1)/A(n,n); for k=n-1:-1:1;
相关推荐: