Gauss列主元素法求解方程组Ax=b
原理
在第k次消元前,首先选取此次消元的主元素. 若$ \left| {a_{lk}^{(k)}} \right| = \mathop {\max }\limits_{k \le i \le n} \left| {a_{ik}^{(k)}} \right|; $则选取$ {a_{lk}^{(k)}} $为列主元素。交换增广矩阵$ [{A^{(k)}},{b^{(k)}}] $的第l行和第k行(若l=k则不必交换),然后进行消元。
MATLAB实现
函数gausscol.m
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 34 35 36 37 38 39 40 41
| function [A,b,x] = gausscol(A,b)
cnt = length(A); for i = 1:cnt - 1 temp = A(i,i); row = i; for j = i + 1:cnt if abs(A(j,i)) > abs(temp) temp = A(j,i); row = j; end end if row ~= i for j = i:cnt m = A(i,j); A(i,j) = A(row,j); A(row,j) = m; end m = b(i); b(i) = b(row); b(row) = m; end for j = i + 1:cnt temp = A(j,i) / A(i,i); for k = i:cnt A(j,k) = A(j,k) - temp * A(i,k); end b(j) = b(j) - b(i) * temp; end end
for i = cnt:-1:1 temp = cnt; while temp > i b(i) = b(i) - A(i,temp) * x(temp); temp = temp - 1; end x(i) = b(i)/A(i,i); end
|
测试用例