用追赶法解三对角方程组Ax=b的C语言代码
时间: 2023-07-24 13:37:03 浏览: 85
用追赶法求解三对角方程组.rar_forgottenxrk_hidden1xh_ownerd3v_线性方程组_追赶法
以下是用追赶法解三对角方程组Ax=b的C语言代码:
```c
#include <stdio.h>
void solve_tridiagonal_system(double *a, double *b, double *c, double *d, int n, double *x) {
double m;
for (int i = 1; i < n; i++) {
m = a[i] / b[i - 1];
b[i] -= m * c[i - 1];
d[i] -= m * d[i - 1];
}
x[n - 1] = d[n - 1] / b[n - 1];
for (int i = n - 2; i >= 0; i--) {
x[i] = (d[i] - c[i] * x[i + 1]) / b[i];
}
}
int main() {
int n = 5;
double a[n - 1], b[n], c[n - 1], d[n], x[n];
// initialize the coefficients and right-hand side
for (int i = 0; i < n - 1; i++) {
a[i] = -1;
b[i] = 2;
c[i] = -1;
d[i] = i + 1;
}
b[n - 1] = 2;
d[n - 1] = n;
// solve the tridiagonal system
solve_tridiagonal_system(a, b, c, d, n, x);
// print the solution
for (int i = 0; i < n; i++) {
printf("x[%d] = %f\n", i, x[i]);
}
return 0;
}
```
其中,`a`、`b`、`c`、`d` 分别是三对角方程组 $Ax=b$ 的系数矩阵的下对角线、主对角线、上对角线和右侧向量,`n` 是方程组的维数,`x` 是解向量。`solve_tridiagonal_system` 函数实现了追赶法求解三对角方程组,具体过程可以参考前面的介绍。在 `main` 函数中,我们通过初始化系数矩阵和右侧向量,调用 `solve_tridiagonal_system` 函数求解方程组,并输出解向量。
阅读全文