用列主元高斯消元法解如下方程组 输出方程组的解的C语言代码
时间: 2023-11-06 13:29:20 浏览: 94
方程组:
```
2x + 3y - z = 1
4x + 4y - 3z = 4
2x + 2y + z = -1
```
代码如下:
```c
#include <stdio.h>
int main() {
double a[3][4] = {{2, 3, -1, 1}, {4, 4, -3, 4}, {2, 2, 1, -1}};
int i, j, k, n = 3;
double c, s, t;
// 列主元高斯消元
for (k = 0; k < n; k++) { // 消元的列
// 选主元
c = 0;
for (i = k; i < n; i++) {
if (a[i][k] > c) {
c = a[i][k];
j = i;
}
}
if (c == 0) {
printf("No unique solution exists.\n");
return 0;
}
// 交换第k行和第j行
if (j != k) {
for (i = 0; i < n + 1; i++) {
t = a[k][i];
a[k][i] = a[j][i];
a[j][i] = t;
}
}
// 消元
for (i = k + 1; i < n; i++) { // 要消元的行
s = a[i][k] / a[k][k];
for (j = k; j < n + 1; j++) {
a[i][j] -= s * a[k][j];
}
}
}
// 回代求解
double x[3];
for (i = n - 1; i >= 0; i--) {
x[i] = a[i][n] / a[i][i];
for (j = i - 1; j >= 0; j--) {
a[j][n] -= a[j][i] * x[i];
}
}
// 输出解
printf("x = %lf, y = %lf, z = %lf\n", x[0], x[1], x[2]);
return 0;
}
```
阅读全文