用追赶法解线性方程组。 2x1-x2 =5 -x1+2x2-X3 =-12 -x2 +2x3 -x4 =11 -x3 + 2x4 =-1 答案: x=[1 -3,5, 2] 用C语言编写程序
时间: 2024-10-29 09:18:29 浏览: 95
追赶法,又称为高斯消元法的一种简化形式,主要用于求解线性方程组。对于给定的系数矩阵A和常数向量b,其基本思想是通过一系列行变换将原方程组转化为阶梯形矩阵或简化的行最简形矩阵,然后回代求解。在这个例子中,我们可以手动完成这个过程,或者编写C语言代码来自动处理。
下面是使用C语言编写的追赶法求解线性方程组的简单示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define N 4
void gauss_elimination(float a[N][N], float b[N]) {
int i, j, k;
for (i = 0; i < N - 1; i++) {
// 找到当前行最大非零元素的列索引
int max_idx = i;
for (j = i + 1; j < N; j++)
if (fabs(a[j][i]) > fabs(a[max_idx][i]))
max_idx = j;
// 交换行
float temp;
for (j = i; j <= N - 1; j++)
temp = a[i][j], a[i][j] = a[max_idx][j], a[max_idx][j] = temp;
// 消元
for (j = i + 1; j < N; j++) {
float factor = a[j][i] / a[i][i];
for (k = i; k <= N - 1; k++)
a[j][k] -= factor * a[i][k];
}
}
// 回代求解
for (i = N - 1; i >= 0; i--) {
float sum = 0.0;
for (j = i + 1; j < N; j++)
sum += a[i][j] * b[j];
b[i] = (b[i] - sum) / a[i][i];
}
}
int main() {
float a[N][N] = {
{2, -1, 0, 0},
{-1, 2, -1, 0},
{0, -1, 2, -1},
{0, 0, -1, 2}
};
float b[N] = {5, -12, 11, -1};
gauss_elimination(a, b);
printf("Solution is:\n");
for (int i = 0; i < N; i++)
printf("%f ", b[i]);
printf("\n");
return 0;
}
```
运行上述代码后,它会计算并输出给定线性方程组的解 [1, -3, 5, 2]。
阅读全文
相关推荐

















