高斯消元法的MATLAB实现

       这是一个基于最大主元的高斯消元法的matlab实现,代码中并未考虑对方程组是否有解以及解的唯一性的判断,具体原理可参考高等代数或《MATLAB数学建模》。

​
function s=GuassSolution(A,b)
%获取未知数的个数
n=length(A(:,1));
%寻找每一列的最大主元所在的行数
for k=1:n-1
    [a,t]=max(abs(A(k:n,k)));
    p=t+k-1;
    if a==0
        error('A is a bizzre matrix');%判断矩阵是否奇异
    else
        %将最大主元所在的行换至当前行
        t1=A(k,:);
        A(k,:)=A(p,:);
        A(p,:)=t1;
        t2=b(k);
        b(k)=b(p);
        b(p)=t2;
        A,b
        %消元,化为行阶梯矩阵
        for j=k+1:n
            m=A(j,k)/A(k,k);
            A(j,:)=A(j,:)-m*A(k,:);
            b(j)=b(j)-m*b(k);
        end
    end
    A,b
    %由于输入的b为行矩阵,此处进行转置
    %回代计算
    c=b'
    c(n)=c(n)/A(n,n);
    for i=1:n-1
        q=(c(n-i)-(A(n-i,n-i+1:n)*c(n-i+1:n)))/A(n-i,n-i);
        c(n-i)=q;
    end
    s=c;
end

​

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值