(完整版)哈工大-数值分析上机实验报告 联系客服

发布时间 : 星期二 文章(完整版)哈工大-数值分析上机实验报告更新完毕开始阅读2007691d302b3169a45177232f60ddccdb38e645

实验报告二

题目: 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;