代码修改如下:

function x = Gauss(A,b) [n,~] = size(A); % 用~代替不需要的输出变量 x = zeros(n,1); Aug = [A,b]; %增广矩阵

for k = 1:n-1 [~,r] = max(abs(Aug(k:n,k))); %找列主元所在子矩阵的行r,用~代替不需要的输出变量 r = r + k - 1; % 列主元所在大矩阵的行 if r>k Aug([k,r],:)=Aug([r,k],:); end if Aug(k,k)==0 error('对角元出现0'); end % 把增广矩阵消元成为上三角 for p = k+1:n Aug(p,:)=Aug(p,:)-Aug(k,:)*Aug(p,k)/Aug(k,k); end end

% 解上三角方程组 A = Aug(:,1:n); b = Aug(:,n+1); x(n) = b(n)/A(n,n); for k = n-1:-1:1 x(k) = (b(k)-A(k,n:-1:k+1)*x(n:-1:k+1))/A(k,k); end

% 返回结果 end

测试代码如下:

A = [1 2 3; 4 5 6; 7 8 0]; b = [1; 2; 3]; x = Gauss(A,b); disp(x);

结果为:

-1.0000 2.0000 -0.000


原文地址: https://www.cveoy.top/t/topic/fcNq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录