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...