gauss消元,就是把兩個式子通過乘除加減的運算,使每次把每行第乙個元素消掉,直到成為上三角矩陣為止。
此時從最後乙個元素反代回去,就可以求出線性方程組的解。
此處**kuangbin的模板
#include
#include
#include
#include
#include
using namespace std;
const int maxn=50;
int a[maxn][maxn];//增廣矩陣
int x[maxn];//解集
bool free_x[maxn];//標記是否是不確定的變元
/*void debug(void)
cout << endl;
} cout << endl;}*/
inline int gcd(int a,int b)
return a;
}inline int lcm(int a,int b)
// 高斯消元法解方程組(gauss-jordan elimination).(-2表示有浮點數解,但無整數解,
//-1表示無解,0表示唯一解,大於0表示無窮解,並返回自由變元的個數)
//有equ個方程,var個變元。增廣矩陣行數為equ,分別為0到equ-1,列數為var+1,分別為0到var.
int gauss(int equ,int var)
//轉換為階梯陣.
col=0; // 當前處理的列
for(k = 0;k < equ && col < var;k++,col++)
if(max_r!=k)
if (free_x_num > 1) continue; // 無法求解出確定的變元.
// 說明就只有乙個不確定的變元free_index,那麼可以求解出該變元,且該變元是確定的.
temp = a[i][var];
for (j = 0; j < var; j++)
x[free_index] = temp / a[i][free_index]; // 求出該變元.
free_x[free_index] = 0; // 該變元是確定的.
} return var - k; // 自由變元有var - k個.
} // 3. 唯一解的情況: 在var * (var + 1)的增廣陣中形成嚴格的上三角陣.
// 計算出xn-1, xn-2 ... x0.
for (i = var - 1; i >= 0; i--)
if (temp % a[i][i] != 0) return -2; // 說明有浮點數解,但無整數解.
x[i] = temp / a[i][i];
} return 0;
}int main(void)
}// debug();
int free_num = gauss(equ,var);
if (free_num == -1) printf("無解!\n");
else if (free_num == -2) printf("有浮點數解,無整數解!\n");
else if (free_num > 0)
}else
}printf("\n");
} return 0;
}以下是浮點型的高斯消元模板
const int maxn=1002;
const double eps=1e-12;
double a[maxn][maxn];
int equ,var;//equ個方程,var個變數
double x[maxn];//解集
bool free_x[maxn];
int n;
int sgn(double x)
if(max_r!=k)
{ // 與第k行交換.
for(j=k;j=0;i--)
{ free_x_num=0;
for(j=0;j1) continue;
temp=a[i][var];
for(j=0;j=0;i--)
{temp=a[i][var];
for(j=i+1;j
高斯消元模板
include include include include include include include include typedef long long ll const int n 1008 高斯消元模板 const double eps 1e 12 double aug n n 增廣矩...
高斯消元模板
用迭代的辦法打會簡潔一些。有些精度上的細節需要注意。多次消元要清空use和cho陣列。實數高斯消元 int use maxn cho maxn void solve equation int n,int m break fd i,n,1 if cho i 自由元的個數就是cho為0的個數 無解的話去...
高斯消元模板
y,z.x,y,z.x,y,z.可以得到乙個上三角矩陣。這時已經可以直接讀出最後乙個方程的解了,再回代到上面的方程就行了。具體實現 對於x ixi xi,找到xixi xi係數最大的乙個方程,以減少精度誤差。然後,把該方程的xixi xi係數轉化為1,帶入後面所有方程消元。考慮倒著往回進行代入消元,...