1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| function x = gauss_elim(A, b) [n, ~] = size(A); Ab = [A b]; for i = 1:n [~, maxRow] = max(abs(Ab(i:n, i))); maxRow = maxRow + i - 1; if i ~= maxRow Ab([i, maxRow], :) = Ab([maxRow, i], :); end for j = i+1:n factor = Ab(j, i) / Ab(i, i); Ab(j, :) = Ab(j, :) - factor * Ab(i, :); end end x = zeros(n, 1); for i = n:-1:1 x(i) = (Ab(i, end) - Ab(i, 1:n) * x) / Ab(i, i); end end
|