列选主元的高斯消去法——MATLAB实现

本文介绍了一种改进的高斯消去法——列选主元策略的高斯消去法,并提供了一个MATLAB函数实现。该方法通过在每一步选择列中绝对值最大的元素作为主元,提高了数值稳定性。

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

日期:11-14
作者:老李

按列选主元策略的高斯消去法

目标

编写函数,实现列选主元策略的高斯消去法

过程

1.消去
2.回代

代码如下:

function [ X, U ] = colGaussElim( A, b )
%colGaussElim :Gauss elimination method of column selection principal element
%  Input  -   :A is the coefficient matrix(n*n)
%         -   :b is the value of equations(n*1)
%  Output -   :X is the solutions of equaions(n*1)
%         -   :U is the coefficient matrix after elimination 
M = [A b];%增广矩阵
[n, ~] = size(A);
X = zeros(n,1);
%消去
for i = 1:n-1
   %换主元
    N = abs(M);
    [~, e] = max(N((i:n),i));%找出该列中主元绝对值最大的元素所在行的索引
    e=e+i-1;
    temp = M(i,:);
    M(i,:) = M(e,:);
    M(e,:) = temp;%替换结束
    if M(i,i) == 0
        error('奇异阵');
    end
    %消去
    for j = i+1:n
        %计算得到乘子:m
        m = M(j,i)/M(i,i);
        M(j,:) = M(j,:)-m*M(i,:);
    end
end
U = M(:,(1:n));
%回代过程
bn = M(:,n+1);
X(n) = bn(n)/M(n,n);
for k = 1:n-1
    X(n-k) = (bn(n-k)-M(n-k,(n-k+1:n))*X(n-k+1:n))/(n-k);
end
end

效果

输入变量

A = [4 5 6 2;0 4 7 3; 6 8 1 1; 3 2 5 1]
b = [4;8;6;1]

结果如图:
在这里插入图片描述
最终成功实现了这个过程

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值