c++ 高斯消去法解方程组的代码
时间: 2023-05-24 08:01:01 浏览: 93
以下是C语言实现的高斯消元法解线性方程组的代码:
```c
#include <stdio.h>
#define N 3 // 方程组未知数的数量
int main()
{
double a[N][N+1] = {
{2, 1, -1, 8},
{-3, -1, 2, -11},
{-2, 1, 2, -3}
}; // 增广矩阵
int i, j, k;
double m;
// 高斯消元
for (i=0;i<N;i++) {
// 首先将本行系数变为1
m = a[i][i];
for (j=i+1;j<N+1;j++)
a[i][j] /= m;
a[i][i] = 1;
// 将本列下面的所有元素变为0
for (j=i+1;j<N;j++) {
m = a[j][i];
for (k=i+1;k<N+1;k++)
a[j][k] -= a[i][k] * m;
a[j][i] = 0;
}
}
// 回代求解
double x[N] = {0};
for (i=N-1;i>=0;i--) {
x[i] = a[i][N];
for (j=i+1;j<N;j++)
x[i] -= a[i][j] * x[j];
}
// 输出结果
for (i=0;i<N;i++)
printf("x[%d] = %f\n", i, x[i]);
return 0;
}
```
这段代码可以解一个3元一次线性方程组,例如:
$$\begin{cases}2x_1+x_2-x_3=8\\-3x_1-x_2+2x_3=-11\\-2x_1+x_2+2x_3=-3\end{cases}$$
当然,如果要解更大的方程组,只需要修改N的值即可。
阅读全文