高斯列主元消去法以c 實現

2021-10-03 01:55:11 字數 1392 閱讀 5562

肺炎期間上網課,學習工程與科學計算的乙個作業

**通過c++進行實現

借鑑了大佬的演算法思想,原帖位址

解決了幾個問題,乙個是原來**輸入偶數陣列結果有誤,另外是輸出的陣列第一列不為零。如有問題或建議歡迎指正

#include

#include

using

namespace std;

const

int n =4;

//交換2個數的大小函式模板

template

<

class

t>

void

inverse

(t *a, t *b)

//高斯列主元素消元法

void

gaussline

(double a[n]

[n],

double b[n]

)//如果該對角線元素是0,同樣不能用高斯消元法來求解

if(a[row]

[row]==0

)//將找出的行進行交換

if(k != row)

for(i =

0; i < n; i++

)inverse

((b + k)

,(b + row));

//消元過程

double c[n]

;for

(j = k +

1; j < n; j++

)for

(i = k +

1; i < n; i++

) b[i]

= b[i]

- c[i]

* b[k];}

}double x[n]

; x[n -1]

= b[n -1]

/ a[n -1]

[n -1]

;for

(i = n -

2; i >=

0; i--

)//列印輸出

for(i =

0; i < n; i++

) cout <<

" x "

<<

"["<< i <<

"]="

<< x[i]

<< endl;

int i1, j1;

for(i1 =

0; i1 < n; i1++)}

intmain()

;int i, j;

double b[4]

=;gaussline

(a, b)

; cin.

get();

return0;

}

上網課really不舒服,想念學校嗚嗚嗚~

高斯消去法與列主元消去法

兩種消去法的實現主要是,通過函式的實現,傳入引數來實現的。如有其他需要,請另行修改 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 chang...

列主元高斯消去法(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為上三角矩陣,在初等變換過程中位於矩陣對角線上的元素稱為主元素,為了避免較小數作為除數產生誤差,每...