高斯消元和列主消元(Matlab实现)

目录

1 原理

2 案例

3 代码

4 结果

5 总结与展望


1 原理

  

2 案例

        

3 代码

%高斯消元
function x = Guass(A,b)
A=[0.4096 0.1234 0.3678 0.2943;0.2246 0.3872 0.4015 0.1129;0.3645 0.1920 0.3781 0.0643;0.1784 0.4002 0.2786 0.3927]
b=[0.4043;0.1550;0.4240;-0.2557]
n = length(b);
for j=1:n                     
    for i=j+1:n               
        if A(j,j)~=0       
            M(i,j)=A(i,j)/A(j,j); 
            for k=j:n       
     A(i,k)=A(i,k)-M(i,j)*A(j,k);
            end
            b(i)=b(i)-M(i,j)*b(j);   
        else 
            error('无法用高斯法求解')
        end
    end
end
 x(n)=b(n)/A(n,n);   
 i=n-1;               
while i>0               
     s=0;               
     for j=i+1:n
         s=A(i,j)*x(j)+s;
     end
     x(i)=(b(i)-s)/A(i,i);
     i=i-1;
end
%列主消元法:
function x = ColGuass(A,b)
A=[0.4096 0.1234 0.3678 0.2943;0.2246 0.3872 0.4015 0.1129;0.3645 0.1920 0.3781 0.0643;0.1784 0.4002 0.2786 0.3927]
b=[0.4043;0.1550;0.4240;-0.2557]
n = length(b);
for j=1:n                    
    for i=j+1:n              
        for k=i:n
            if abs(A(k,j))>abs(A(j,j))
                for k1=j:n             
                    a1=A(j,k1);
                    a2=A(k,k1);
                    A(j,k1)=a2;
                    A(k,k1)=a1;
                end
                t=b(k);
                b(k)=b(j);
                b(j)=t;
            end
        end 
        if A(j,j)~=0        
            M(i,j)=A(i,j)/A(j,j); 
            for k=j:n         
     A(i,k)=A(i,k)-M(i,j)*A(j,k);
            end     b(i)=b(i)-M(i,j)*b(j);   
        else 
            error('无法用列主元消去法求解')
        end
    end
end 
 x(n)=b(n)/A(n,n);    
 i=n-1;               
while i>0            
     s=0;              
     for j=i+1:n
         s=A(i,j)*x(j)+s;
     end
     x(i)=(b(i)-s)/A(i,i);
     i=i-1;
end
format long
误差验证:

A=[0.4096 0.1234 0.3678 0.2943;0.2246 0.3872 0.4015 0.1129;0.3645 0.1920 0.3781 0.0643;0.1784 0.4002 0.2786 0.3927];
x=[-0.181917777335808;-1.663030812834654;2.217228318359845;-0.446704218797852];%列主消元结果
b=[0.4043;0.1550;0.4240;-0.2557]
e1=A*x-b%列主消元误差
x2=[-0.181917777335807;-1.663030812834652;2.217228318359843;-0.446704218797852];%高斯消元结果
e2=A*x2-b%高斯消元误差

4 结果

     

 5 总结与展望

       把向量计算得到的解向量代入原方程,可以发现符合的还是比较好,这说明了列主元消去法计算这一类方程的有效性。 事实上,对于普通 Gauss 消去法的修正,还可以有行主元消去法,全主元消去法,但是 全主元消去法相当于行、列主元消去法的工作量要大的很多,所以列主元消去法是解线性方 程组实用的方法之一。如果使用按比例列主元消去法,效果会比列主元消去法更优越,尤其是方程组系数相差非常大的时候,而且按比列列主元消去法算法上相对而言也比较容易实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值