当前位置: 首页 > article >正文

MATLAB使用高斯消元法计算方程组的解

function X = uptrbk(A,B)
% A,B是系数矩阵和列向量
% 求方阵A 含多少行(列) X是N*1列向量解
[~, N] = size(A);
X = zeros(N,1);
% C一行,N+1列
C = zeros(1,N+1);
% 增广矩阵Aug
Aug = [A,B];
%循环从第一列到倒数第二列
for p=1:N-1
    [~,j] = max(abs(Aug(p:N,p)));%返回每一列中的绝对值最大的数的索引j,Y是最大值
    C = Aug(p,:);%把p行所有元素存储到C中,1,2,3,...,N-1.
    %进行交换
    Aug(p,:)=Aug(j+(p-1),:); %Aug第p行改为j+p-1行,(相对索引).
    Aug(j+(p-1),:)=C;
    if Aug(p,p) == 0   %如果交换后,Aii为0
        'A was singular. No unique solution';
        break
    end
    %交换后 进行计算
    for k = p+1:N
        m = Aug(k,p)/Aug(p,p);
        Aug(k,p:N+1) = Aug(k,p:N+1)-m*Aug(p,p:N+1);
    end
end
% 通过回代计算方程的解
    for i = N:-1:1  
        X(i) = (Aug(i, N+1) - Aug(i, i+1:N) * X(i+1:N)) / Aug(i, i);  
    end  
end  


% function X = uptrbk(A, B)  
%     % uptrbk Solves the linear equation system A*X = B using back substitution  
%     % A: Upper triangular matrix  
%     % B: Column vector  
%     
%     % 获取矩阵 A 的维度  
%     [N, ~] = size(A);  
%     % 初始化解向量 X  
%     X = zeros(N, 1);  
%     % 初始化增广矩阵 Aug  
%     Aug = [A, B];  
%     
%     % 高斯消元过程  
%     for p = 1:N-1  
%         % 寻找列 p 从当前行到最后一行的最大值  
%         [Y, j] = max(abs(Aug(p:N, p)));  
%         
%         % 交换当前行与最大值所在行  
%         if j+p-1 ~= p  
%             Aug([p, j+p-1], :) = Aug([j+p-1, p], :);  % 进行行交换  
%         end  
%         
%         % 检查非零主元  
%         if Aug(p, p) == 0  
%             error('Matrix A is singular. No unique solution exists.');  
%         end  
%         
%         % 消元过程  
%         for k = p+1:N  
%             m = Aug(k, p) / Aug(p, p);  
%             Aug(k, p:N+1) = Aug(k, p:N+1) - m * Aug(p, p:N+1);  
%         end  
%     end  
%     
%     % 回代过程,解出 X  
%     X(N) = Aug(N, N+1) / Aug(N, N);  
%     for i = N-1:-1:1  
%         X(i) = (Aug(i, N+1) - Aug(i, i+1:N) * X(i+1:N)) / Aug(i, i);  
%     end  
% end

其中,A是系数矩阵,B是右边列向量.


http://www.kler.cn/news/342677.html

相关文章:

  • TikTok Shop美区跨境商家入驻标准大调整,怎么批量采集tiktok达人信息?
  • 获取鸿蒙设备Udid遇到的问题
  • 极狐GitLab X 某轨道交通控制系统龙头企业,助力业务研发敏捷化
  • @Transactional声明式事务回调编程
  • 大数据在金融领域的应用及其未来趋势
  • SpringMVC源码-处理器适配器HandlerAdapter
  • [OS] 4.Linux 内核
  • 开源 AI 智能名片 O2O 商城小程序源码助力企业实现三层式个性化体验
  • Python酷库之旅-第三方库Pandas(143)
  • JVM系列(三) -类加载器及双亲委派模型介绍
  • onvif相关的http api有哪些功能点
  • @KafkaListener注解中containerFactory属性的作用
  • CSS——文字渐入效果
  • 高频CSS总结
  • Redis是单线程为何性能还高
  • 1024程序员节活动——「爱码士找Bug」第二弹
  • java的Maven项目的ehcache缓存学习记录
  • ODE45函数——中间变量提取,时变量参数,加速仿真以及运行进度条
  • C# 文件夹类的实现与文件属性处理
  • 安装Spark-单机部署,Standalone集群部署,Spark on Yarn实现