使用MATLAB实现列主元消去法

可以逐步输出消去的每一步结果,更改矩阵的话只需更改代码中数值即可。

clc

clear

% 定义系数矩阵和常数项向量

a1 = [0 2 0 1;

2 2 3 2;

4 -3 0 1;

6 1 -6 -5];

b = [0;-2;-7;6];

% 构建增广矩阵

a = [a1 b];

n = size(a, 1);

% 消元

for i = 1:n-1

fprintf('步骤 %d:\n', i);

% 列选主元

[~, nmax] = max(abs(a(i:n, i)));

nmax = nmax + i - 1;

% 交换当前行与主元所在行

p = a(i, :);

a(i, :) = a(nmax, :);

a(nmax, :) = p;

% 打印当前矩阵状态

disp(a);

% 消元

for k = i+1:n

mik = a(i, i:n+1) ./ a(i, i) .* a(k, i);

a(k, i:n+1) = a(k, i:n+1) - mik;

end

end

% 打印最终列主元矩阵状态

fprintf('最终列主元矩阵:\n');

disp(a);

% 回代

x(n) = a(n, n+1) / a(n, n);

for i = n-1:-1:1

x(i) = (a(i, n+1) - sum(x(i+1:n) .* a(i, i+1:n))) / a(i, i);

end

% 打印解向量x

fprintf('解向量 x:\n');

disp(x);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值