解线性方程组的直接方法--低阶稠密矩阵Gauss消元法算法matlab实现

本文介绍了一种使用MATLAB实现的高斯消元法,该方法用于解决线性方程组AX=B的问题。首先,通过迭代操作将系数矩阵A转化为上三角矩阵;然后,采用逆向替代法求解结果向量。文章提供了详细的代码实现,并附有测试案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

function  [result] = GaussElimination1(A,B)
%  inputs:
%        A:系数矩阵,为n*n维方阵
%        B :载荷矩阵,为n*1维矩阵,输入B时要求时单列
%       说白了,就是AX=B    
%  outputs:
%         result:计算结果向量,为n*1为矩阵

% 1、判断输入的矩阵维度是不是满足要求 n*n
[A_Row,A_Column] = size(A);
[B_Row,~] = size(B);

% 2、初始化result向量
result = zeros(B_Row,1); %和B同行数
%3、判断输入的维度是不是满足要求
if (A_Row ~= A_Column) ||(A_Row ~= B_Row) % A要行列数等,还要和B同行数,有可能唯一解
    print('输入错误!');
else       
    for L =1:A_Row-1        %需要进行(A_Row-1)次调整
        if A(L,L)==0
            print('主对角线元素不能为0');
            break;
        else
            for k = L+1:A_Row    % 循环计算第l+1行到最后一行
                L_lk = A(k,L)*A(L,L); % 每次更新 ,为图示的C(K,L)/C(L,L)
                for j =L+1:A_Column  % 更新每一行从第i个元素开始后的所有元素
                    A(k,j)=  A(k,j)-L_lk*A(L,j);
                end
                %需要对B也进行改动
                B(k)=B(k) - L_lk *B(L);
            end %for
        end% 第二个if
    end% for
    
    %倒序求解过程,获得结果,倒三角形
    result(B_Row) = B(B_Row)/A(A_Row,A_Column);
    for k=A_Row-1:-1:1
        sumTemp =0;
        for j = k+1:A_Row
            sumTemp =sumTemp+A(k,j)*result(j);
        end
        result(k) =( B(k)-sumTemp)/A(k,k);
    end
end % if
测试案例:a = [1,2;5,6], b = [12,24],则计算结果为result=[-6,9]

学习参考资料:Gauss消元法的Matlab实现
这个博主的文章对公式的推导写得很详细,我对他的代码进行了改写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值