修改并运行下列代码给出结果function x=GaussAbnn = sizeA; x = zerosn1; Aug = Ab; 增广矩阵 for k = 1n-1 pivr = maxabsAugknk; 找列主元所在子矩阵的行r r = r + k - 1; 列主元所在大矩阵的行 if rk Augkr=Augrk; end if Augkk
代码修改如下:
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 著作权归作者所有。请勿转载和采集!