简介
高斯消元,一般用于求解元一次方程组.
求解方法也很简单.
解法
其实就是暴力的求解.
元一次方程组的系数可以写成一个矩阵的形式,而我们的目标就是将矩阵的每一行都消的只剩下一个数.
其实剩下的看代码里面的注释就好了.
因为实在是太简单了
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const int N = 1e2 + 5;
int n,flag;
int v[N];
double a[N][N],ans[N];
int main()
{
scanf("%d",&n);
for (int i = 1 ; i <= n ; i++)
for (int j = 1 ; j <= n + 1 ; j++) scanf("%lf",&a[i][j]);
for (int i = 1 ; i <= n ; i++)
{
double x = 0;
int p = 0;
for (int j = 1 ; j <= n ; j++) if (fabs(a[i][j]) > x) x = fabs(a[i][j]),p = j; //找主元
if (!p)
{
printf("No Solution\n");
return 0;
} //若不足n个元则无解
v[i] = p;
for (int j = 1 ; j <= n ; j++)
if (i != j)
{
double t = a[j][p] / a[i][p];
for (int k = 1 ; k <= n + 1 ; k++) a[j][k] -= a[i][k] * t; //消去主元
}
}
for (int i = 1 ; i <= n ; i++) ans[v[i]] = a[i][n + 1] / a[i][v[i]]; //求解
for (int i = 1 ; i <= n ; i++) printf("%.2lf\n",ans[i]);
return 0;
}
来源:https://blog.csdn.net/P_hillipe/article/details/102749566