高斯消去法与列选主元的高斯消去法-matlab实现

上一次写了一篇关于列选主元的高斯消去法,这次进行了修改,直接对增广矩阵进行变换,更简洁一些。不过没有对主元过小时进行处理,因此有缺陷。

%高斯分解
function [X]=gauss(A,b)
%Inpiut A 是系数矩阵,b是右端项
%Output x是解

[N,N]=size(A);
X=zeros(N,1);
B=[A b];
for i=1:N-1 
    if A(i,i)==0
        'A is singular. no unique solution'
        break
    end
    for k=i+1:N;
        temp=B(k,i)/B(i,i);
        B(k,i+1:N+1)=B(k,i+1:N+1)-temp*B(i,i+1:N+1);
    end
end
%回代法
X(N)=B(N,N+1)/B(N,N);
for k=N-1:-1:1
    X(k)=(B(k,N+1)-B(k,k+1:N)*X(k+1:N))/B(k,k);
end

 

%列选主元的高斯消去法
function [X]=gauss_pivot(A,b)
%Inpiut A 是系数矩阵,b是右端项
%Output x是解

[N,N]=size(A);
X=zeros(N,1);
C=zeros(1,N);
B=[A b];
for i=1:N-1
    [max1,j]=max(abs(B(i:N,i)));
    %交换行
    C=B(i,:);%C为A的第k列的值
    B(i,:)=B(j+i-1,:); %将A的第K列赋为最大
    B(j+i-1,:)=C;
     %主元为0的情况
     %主元为0的情况
    if A(i,i)==0
        'A is singular. no unique solution'
        break
    end
    for k=i+1:N;
        temp=B(k,i)/B(i,i);
        B(k,i+1:N+1)=B(k,i+1:N+1)-temp*B(i,i+1:N+1);
    end
end
%回代法
X(N)=B(N,N+1)/B(N,N);
for k=N-1:-1:1
    X(k)=(B(k,N+1)-B(k,k+1:N)*X(k+1:N))/B(k,k);
end

 

%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值