码迷,mamicode.com
首页 > 其他好文 > 详细

高斯消去法解线性系统

时间:2015-11-03 23:16:19      阅读:372      评论:0      收藏:0      [点我收藏+]

标签:

高斯消去法分为两个过程:第一步是前向消元(forward elimination),也就是将系数矩阵转化成上三角矩阵的过程;第二步是回代(back substitution)过程,自底向上求解方程组的过程。

选择主元(pivoting),主元(pivot)一定不能为0.且主元应当尽可能大。所以一般情况下,我们采取部分选主元(partial pivoting)。选择主元为所在各列中绝对值最大的元素(或者非0亦可)。然后将对应的该行与主元行进行交换,然后消元。

function x = gausselimination(A,b)
ab = [A,b];
[r,c] = size(ab);
for k=1:r-1
    [rm,im]=max(abs(ab(k:r,k)));
    im = im +k-1;
    if(ab(im,k)~=0)
        if(im~=k)
            ab([k im],:)=ab([im k],:);
        end
    end
    for i=k+1:r
        ab(i,k:c)=ab(i,k:c)-ab(i,k)/ab(k,k)*ab(k,k:c);
    end
end

x=zeros(r,1);
x(r)=ab(r,c)/ab(r,r);
for i=r-1:-1:1
    x(i)=(ab(i,c)-ab(i,i+1:r)*x(i+1:r))/ab(i,i);
end

以上是matlab代码实现(保存为gausselimination.m)。以下是运行结果:

>> A = [10 -7 0;-3 2 6;5 -1 5]


A =


    10    -7     0

    -3     2     6

     5    -1     5


>> b = [7;4;6]


b =


     7

     4

     6

>> gausselimination(A,b)


ans =


    0.0000

   -1.0000

    1.0000


高斯消去法解线性系统

标签:

原文地址:http://my.oschina.net/donngchao/blog/525496

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!