gauss2.m

来自「数值分析, 同济大学教材<<现代数值数学和计算>>数值分」· M 代码 · 共 43 行

M
43
字号

function x = Gauss2(A, d)
n = length(d);
for i = 1 : n
  dn(i) = i;
end
for i = 1 : n % each column
  % make the first row the largest one
  rowmax = i;
  for j = i+1 : n
    if A(j, i) > A(rowmax, i)
      rowmax = j;
    end
  end
  if rowmax ~= i
    row = A(i, :);
    A(i, :) = A(rowmax, :);
    A(rowmax, :) = row;
    row = dn(i);
    dn(i) = dn(rowmax);
    dn(rowmax) = row;
  end
  
  if A(i, i) == 0 then
    error('zero in the first column.');
  end
  for j = i+1 : n % each row
    k = - A(j, i) / A(i, i);
    A(j, :) = A(j, :) + A(i, :) * k;
    d(j, 1) = d(j, 1) + d(i, 1) * k;
  end
end

x0 = zeros(n, 1);
x0(n) = d(n, 1) / A(n, n);
for i = n-1 : -1 : 1
  x0(i) = (d(i, 1) - A(i, :) * x0) / A(i, i);
end

for i = 1 : n
  x(dn(i)) = x0(i);
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?