?
??在實際運用中需判斷線性方程組有無解,可以通過矩陣運算判斷線性方程組是否有解文章來源:http://www.zghlxwxcb.cn/news/detail-517906.html
線性方程組有無解總結(jié):
矩陣求解秩流程:
??所以:當(dāng)我們遇到題目問線性方程組是否有解時,只需求解系數(shù)矩陣的秩與增廣矩陣的秩的關(guān)系 。我們可以通過分別求系數(shù)矩陣與增廣矩陣的秩來判斷
?
代碼實現(xiàn):文章來源地址http://www.zghlxwxcb.cn/news/detail-517906.html
// mat是矩陣,rows是矩陣的行數(shù),cols是矩陣的列數(shù)
void jude(vector<vector<float>> mat, int rows, int cols) {
int k, r = 0, d = 0; // r表示秩,d表示當(dāng)前在哪一行
for (int i = 0; i < cols; i++) {
k = d;
for (int j = d+1; j < rows; j++) {
if (fabs(mat[k][i]) < fabs(mat[j][i]))
k = j;
}
if (k != d) { // 交換第i行和第k行,行列式該變號
for (int j = i; j < cols; j++) {
float temp = mat[d][j];
mat[d][j] = mat[k][j];
mat[k][j] = temp;
}
}
if (mat[d][i] == 0) { // 當(dāng)mat[i][i]為零是時,行列式為零
continue;
}
else {
r += 1;
for (int j = 0; j < rows; j++) {
if (j != d) {
temp = -1 * mat[j][i] / mat[d][i];
for (k = i; k < cols; k++)
mat[j][k] = mat[j][k] + temp * mat[d][k];
}
}
temp = mat[d][i];
for(int j = i; j<cols; j++)
mat[d][j] = mat[d][j] / temp;
}
d += 1;
if (d >= m)
break;
}
printf("矩陣的秩為:%d\n", r);
}
到了這里,關(guān)于【算法競賽模板】求解線性方程組是否有解(求解矩陣的秩)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!