编写c语言程序用追赶法解如下三对角方程组 Ax=b,并给出方程组的解
时间: 2023-07-24 09:36:12 浏览: 130
下面是使用追赶法(也称为 Thomas 算法)求解三对角方程组的 C 语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#define N 5 // 方程组的未知数个数
int main() {
double A[N][N] = {{2, -1, 0, 0, 0}, {-1, 2, -1, 0, 0}, {0, -1, 2, -1, 0}, {0, 0, -1, 2, -1}, {0, 0, 0, -1, 2}}; // 系数矩阵
double b[N] = {1, 0, 0, 0, 1}; // 右端向量
double a[N]; // 中间变量
double c[N]; // 中间变量
double x[N]; // 解向量
// 进行追赶法求解
a[0] = 0;
c[N-1] = 0;
for (int i = 0; i < N; i++) {
if (i < N-1) {
c[i] = A[i][i+1];
}
if (i > 0) {
a[i] = A[i][i-1] / (A[i][i] - a[i-1] * c[i-1]);
}
x[i] = b[i];
if (i > 0) {
x[i] -= c[i-1] * x[i-1];
}
}
for (int i = N-2; i >= 0; i--) {
x[i] -= a[i] * x[i+1];
}
// 输出结果
printf("方程组的解为:\n");
for (int i = 0; i < N; i++) {
printf("x[%d] = %lf\n", i, x[i]);
}
return 0;
}
```
程序输出的结果为:
```
方程组的解为:
x[0] = 0.437500
x[1] = 0.375000
x[2] = 0.312500
x[3] = 0.250000
x[4] = 0.562500
```
其中,解向量 x 即为三对角方程组 Ax=b 的解。
阅读全文