wuperseverance 2024-03-14 15:35 采纳率: 85.7%
浏览 10
已结题

matlab高斯消元法

img


matlab代码怎么写(゚o゚;
用普通高斯消元,再用选主元高斯消元

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2024-03-14 15:43
    关注

    以义 下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    以下是使用Matlab编写顺序高斯消元法和列主元高斯消元法的示例代码:

    顺序高斯消元法:

    function x = gaussian_elimination(A, b)
        [n, ~] = size(A);
        
        % 步骤1: 构造增广矩阵
        Aug = [A, b];
        
        % 步骤2: 前向消元
        for k = 1:n-1
            for i = k+1:n
                factor = Aug(i,k)/Aug(k,k);
                Aug(i,:) = Aug(i,:) - factor * Aug(k,:);
            end
        end
        
        % 步骤3: 回代求解
        x = zeros(n,1);
        x(n) = Aug(n,n+1) / Aug(n,n);
        for k = n-1:-1:1
            x(k) = (Aug(k,n+1) - Aug(k,k+1:n)*x(k+1:n)) / Aug(k,k);
        end
    end
    
    % 示例代码
    A = [1.1348 3.8326; 1.1651 3.4017; 9.5342 0.5301; 1.7875 2.5330; 1.5435 6.3941];
    b = [3.4129; 4.9317; 8.7643; 1.3142; 18.4231];
    
    x = gaussian_elimination(A, b);
    x = round(x, 5) % 结果保留小数点后5位
    

    列主元高斯消元法:

    function x = gaussian_elimination_pivot(A, b)
        [n, ~] = size(A);
        
        % 步骤1: 构造增广矩阵
        Aug = [A, b];
        
        % 步骤2: 前向消元(选择列主元)
        for k = 1:n-1
            [~, pivot] = max(abs(Aug(k:n,k)));
            pivot = pivot + k - 1;
            Aug([k,pivot],:) = Aug([pivot,k],:);
            
            for i = k+1:n
                factor = Aug(i,k)/Aug(k,k);
                Aug(i,:) = Aug(i,:) - factor * Aug(k,:);
            end
        end
        
        % 步骤3: 回代求解
        x = zeros(n,1);
        x(n) = Aug(n,n+1) / Aug(n,n);
        for k = n-1:-1:1
            x(k) = (Aug(k,n+1) - Aug(k,k+1:n)*x(k+1:n)) / Aug(k,k);
        end
    end
    
    % 示例代码
    A = [1.1348 3.8326; 1.1651 3.4017; 9.5342 0.5301; 1.7875 2.5330; 1.5435 6.3941];
    b = [3.4129; 4.9317; 8.7643; 1.3142; 18.4231];
    
    x = gaussian_elimination_pivot(A, b);
    x = round(x, 5) % 结果保留小数点后5位
    

    请注意以上代码是一种简单的实现方式,可能并不适用于所有情况。在实际应用中,可能需要对代码进行修改以进行错误处理、输入验证和性能优化等。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月7日
  • 已采纳回答 3月30日
  • 创建了问题 3月14日