數學 高斯消元法

2022-05-11 06:01:55 字數 2270 閱讀 6365

struct matrix 

void show()

}// 列主元gaussjordan消元法

int gaussjordan()

if(abs(a[pivot][col]) <= eps)

pos[col] = ++row;

if(pivot != row)

// 列主元置1

for (int j = m + 1; j >= col; --j)

a[row][j] /= a[row][col];

// 在所有其他行中,消去該變數

for(int i = 1; i <= n; ++i)

}// 檢查無解的情形

for(int i = 1; i <= n; ++i)

if(!ok)

return -1; // 失敗:空行 = 非0值,返回-1

}// 回代

for(int j = 1; j <= m; ++j)

x[j] = a[pos[j]][m + 1]; // 列主元置1,自由變數均置0的情形

}return row; //成功:返回矩陣的秩

}} mat;

gauss轉換為行最簡形,傳入原本增廣矩陣的左側a(記得m是a的列數,不是增廣矩陣的列數),傳出乙個位置向量,表示原本矩陣的新矩陣的第i行應原本矩陣的第pos[i]行,傳出乙個係數向量,表示在交換位置之後,位於這個新位置的行所乘的k。

solve傳入乙個位置向量,和原本增廣矩陣的右側b,對這個增廣矩陣進行求解,解出所有約束變數的取值(自由變數是可以任意取值的)。

兩個步驟高斯消元法:

struct matrix 

void show()

}struct operation op;

vectorvec;

// 列主元gaussjordan消元法

int gaussjordan1()

if(abs(a[pivot][col]) <= eps)

pos[col] = ++row;

if(pivot != row) );

// 行交換,行列式的值變成相反數

for (int j = m + 1; j >= col; --j)

swap(a[pivot][j], a[row][j]);

}vec.pb();

// 列主元置1

for (int j = m + 1; j >= col; --j)

a[row][j] /= a[row][col];

// 在所有其他行中,消去該變數

for(int i = 1; i <= n; ++i) );

for (int j = m + 1; j >= col; --j)

a[i][j] -= a[row][j] * a[i][col];}}

return row; //成功:返回矩陣的秩

}int gaussjordan2()

if(type == 2)

if(type == 3)

}// 檢查無解的情形

for(int i = 1; i <= n; ++i)

if(!ok)

return -1; // 失敗:空行 = 非0值,返回-1

}// 回代

for(int j = 1; j <= m; ++j)

x[j] = a[pos[j]][m + 1]; // 列主元置1,自由變數均置0的情形

}return 1; //成功

}} mat;

求解行列式:

const double eps = 1e-9;

int n;

vector> a(n, vector(n));

double det = 1;

for (int i = 0; i < n; ++i)

swap(a[i], a[k]);

if (i != k) det = -det;

det *= a[i][i];

for (int j = i + 1; j < n; ++j) a[i][j] /= a[i][i];

for (int j = 0; j < n; ++j)

if (j != i && abs(a[j][i]) > eps)

for (int k = i + 1; k < n; ++k) a[j][k] -= a[i][k] * a[j][i];

}cout << det;

數學 高斯 約旦消元法

給定 n 元一次方程組 begin a x 1 a x 2 cdots a x n b 1 a x 1 a x 2 cdots a x n b 2 cdots a x 1 a x 2 cdots a x n b n end 請求出方程組的解的情況 對於這樣的問題,我們可以使用高斯消元法進行求解,當然...

高斯消元法(二) 高斯消元法原理

高斯消去法是一種常用的求解線性方程組的方法,通過逐次消元後,在回代求解,實際計算中常用的一種方法。順序消去法 將ax b按照從上至下 從左至右的順序化為上三角方程組,中間過程不對矩陣進行交換,主要步驟如下。step1 將第2行至第n行,每行分別與第一行做運算,消掉每行第乙個引數。公式如 形成如下圖所...

高斯消元法

寒假前,小導師給我們布置了三道程式設計題,其中有一道是利用高斯消元法解線性方程組的。在網上搜了些資料,自己照葫蘆畫瓢編出乙個簡單的高斯消元法 利用矩陣的初等行變換 高斯消元法解線性方程組 include include include define dim 10 double a dim 1 dim...