兩種消去法的實現主要是,通過函式的實現,傳入引數來實現的。如有其他需要,請另行修改**
function
time = gauss
(n, a, b)
%b = [a b];
tic;
for k = 1:n-1
if a(k,k) == 0
disp('the matrix has too many answers, please change the matrix');
return
endfor
i = k+1:n
m = a(i, k) / a(k , k);
a(i, k) = 0;
a(i, k+1:n) = a(i, k+1:n) - m*a(k, k+1:n);
b(i) = b(i) - m*b(k);
endend%回代取得結果
x = zeros(n,1);
if a(n, n) == 0
disp('the matrix has too many answers, please change the matrix');
return
end x(n) = b(n) / a(n,n);
fori = n-1:1
x(i) = (b(i) - sum(a(i,i+1:n) * x(i+1:n)))/a(i,i);
endtoc;
time = toc;
end
function
time = columnpivot
(n, a, b)
%b = [a b];
tic;
for k = 1:n-1
max = -1;
m = k;
forj = k+1:n
if a(j, k) > max
max = a(j, k);
m = j;
endend a([k m], :) = a([m k], :);
temp = b(m);
b(m) = b(k);
b(k) = temp;
%判斷是否是0
if a(k,k) == 0
disp('the matrix has too many answers, please change the matrix');
return
endfor
i = k+1:n
m = a(i, k) / a(k , k);
a(i, k) = 0;
a(i, k+1:n) = a(i, k+1:n) - m*a(k, k+1:n);
b(i) = b(i) - m*b(k);
endend%回代取得結果
x = zeros(n,1);
if a(n, n) == 0
disp('the matrix has too many answers, please change the matrix');
return
end x(n) = b(n) / a(n,n);
fori = n-1:1
x(i) = (b(i) - sum(a(i,i+1:n) * x(i+1:n)))/a(i,i);
endtoc;
time = toc;
end
列主元高斯消去法(C語言)
高斯消元法是將方程組中的一方程的未知數用含有另一未知數的代數式表示,並將其代人到另一方程中,這就消去了一未知數,得到一解 或將方程組中的一方程倍乘某個常數加到另外一方程中去,也可達到消去一未知數的目的。消元法主要用於二元一次方程組的求解。核心 1 兩方程互換,解不變 2 一方程乘以非零數k,解不變 ...
c 高斯列主元素消去法
設有線性方程組 a x bax b ax b 根據線性代數的知識,當det a 0 det a 0 deta 0時,上述方程組的解存在且唯一,對增廣矩陣 a,b a,b a,b 施行初等變換,化a aa為上三角矩陣,在初等變換過程中位於矩陣對角線上的元素稱為主元素,為了避免較小數作為除數產生誤差,每...
高斯列主元消去法以c 實現
肺炎期間上網課,學習工程與科學計算的乙個作業 通過c 進行實現 借鑑了大佬的演算法思想,原帖位址 解決了幾個問題,乙個是原來 輸入偶數陣列結果有誤,另外是輸出的陣列第一列不為零。如有問題或建議歡迎指正 include include using namespace std const int n 4...