高斯消元

模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// 此模板只能解决有解的情况,
// 但是可以通过定义解决无穷解与无解的情况
// c[][]储存的是系数矩阵
// b[]储存的是尾数矩阵
// 最终a[][]是一个对角线矩阵
void Gauss()
{
for(int i=1; i<=n; i++)
{
for(int j=i; j<=n; j++)
{
if(fabs(c[j][i])>eps)
{
for(int k=1; k<=n; k++)
{
swap(c[i][k], c[j][k]);
}
swap(b[i], b[j]);
}
}
for(int j=1; j<=n; j++)
{
if(i==j) continue;
double rate = c[j][i]/c[i][i];
for(int k=i; k<=n; k++)
c[j][k] -= c[i][k]*rate;
b[j] -= b[i]*rate;
}
}

for(int i=1; i<n; i++)
printf("%.3lf ", b[i]/c[i][i]);
printf("%.3lfn", b[n]/c[n][n]);
}