写一个用直接法解线性方程组Hx=B的matlab代码
时间: 2023-10-06 17:10:09 浏览: 121
MATLAB解线性方程组的直接方法.doc
好的,以下是一个用直接法解线性方程组Hx=B的MATLAB代码,其中采用了高斯消元法(Gaussian Elimination):
```matlab
function x = gauss_elim(H,B)
% 检查H和B的维度是否匹配
if size(H,1) ~= size(H,2) || size(H,1) ~= size(B,1)
error('H和B的维度不匹配');
end
% 将H和B合并成一个增广矩阵
A = [H B];
% 高斯消元
n = size(A,1);
for k = 1:n-1
% 选主元
[~,p] = max(abs(A(k:n,k)));
p = p+k-1;
% 交换k和p两行
if p ~= k
A([k,p],:) = A([p,k],:);
end
% 消元
for i = k+1:n
m = A(i,k) / A(k,k);
A(i,k+1:end) = A(i,k+1:end) - m * A(k,k+1:end);
A(i,k) = m;
end
end
% 回代求解
x = zeros(n,1);
x(n) = A(n,n+1) / A(n,n);
for i = n-1:-1:1
x(i) = (A(i,n+1) - A(i,i+1:n)*x(i+1:n)) / A(i,i);
end
end
```
输入参数为一个n×n矩阵H和一个n×1矩阵B,输出为一个n×1矩阵x,代表线性方程组Hx=B的解。
阅读全文