列主元消去法
列主元素消去法是为控制舍入误差而提出来的一种算法,列主元素消去法计算基本上能控制舍入误差的影响,其基本思想是:在进行第 k(k=1,2,…,n-1)步消元时,从第k列的 akk及其以下的各元素中选取绝对值最大的元素,然后通过行变换将它交换到主元素akk的位置上,再进行消元。
优点
高斯消去法从第k步到第k+1步的消元过程,**必须满足条件a(kk)不等于零 (kk指下标)。而这个元素 即被称为第k步的主元(素)。**显然,高斯消去法是按方程排列的自然顺序产生主元的,这样,一旦出现 计算就归于失败,
而且即使a(kk)不等于零 (kk指下标) ,但若其绝对值很小,也将会因用它作除数,引起其他元素的数量级及舍人误差急剧增大,导致最终计算结果不可靠。为了避免在高斯消去法应用中可能出现的这类问题,就发展形成了列主元、全主元等多种消去法。这些方法的基本点在于对高斯消去法的过程作某些技术性修改,全面或局部地选取绝对值最大的元素为主元素,从而构成了相应的主元(素)消去法。列主元(素)消去法以处理简单、相对计算量小的特点,在各类主元消去法中得到最为广泛的应用。
基本思想
列主元消去法的基本思想是:
在进行第k(k=0,1,2,3-----n-1) 步消元时,从第k列的 akk (kk是下标) 及其以下的各元素中选取绝对值最大的元素,然后通过行变换将它交换到主元素 akk (kk是下标) 的位置上,再进行消元。
过程
算法
MATLAB程序
function z= Gausselimpiv (A,b, ep)
[m,n]=size(A);
if m~=n
disp(’输入错误,系数矩证阵只能是方阵')
end
if n~=length (b)
disp('输入错误,常数项的个数应与方程的个数相同')
end
if nargin==2
ep= eps ;
end
for k=1:n-1
p=A(k,k);I=k;
for i=k:n
if abs (A (i, k)) > abs (p)
end
end
if p<=ep
z=0;
end
if I~=k
for j= k:n
w=A(k,j);A(k,j)=A(I,j);A(I,j)=w;
end
u=b(k);b(k)=b(I);b(I)=u;
end
for i= k+1:n
A(i,k)=A(i,k)/A(k,k);
b(i)=b(i)-A(i,k) b(k);
forj=k+1:n
A(i,j)=A(i,j)-A(i,k) A(k,j);
end
end
end
b(n)=b(n)/A(n,n);
fori=(n-1):-1:1
w=0;
forj=(i+1}:n
w=w+A(i,j) b(j);
end
b(i)=(b(i)-w)/A(i,i);
end
z=b; [3]