用追赶法解三对角方程组Ax=b的C语言代码
时间: 2023-07-24 22:37:09 浏览: 113
以下是用追赶法解三对角方程组Ax=b的C语言代码:
```c
#include <stdio.h>
void TDMA(int n, double* a, double* b, double* c, double* d, double* x) {
int i;
double m;
for (i = 1; i < n; i++) {
m = a[i] / b[i - 1];
b[i] = b[i] - m * c[i - 1];
d[i] = d[i] - m * d[i - 1];
}
x[n - 1] = d[n - 1] / b[n - 1];
for (i = n - 2; i >= 0; i--) {
x[i] = (d[i] - c[i] * x[i + 1]) / b[i];
}
}
int main() {
int n = 4; // 三对角方程组的大小
double a[] = {0, 1, 2, 3}; // 下对角线
double b[] = {4, 5, 6, 7}; // 主对角线
double c[] = {8, 9, 10, 0}; // 上对角线
double d[] = {11, 12, 13, 14}; // 常数项
double x[n]; // 解
TDMA(n, a, b, c, d, x);
int i;
for (i = 0; i < n; i++) {
printf("x[%d] = %f\n", i, x[i]);
}
return 0;
}
```
其中,a、b、c、d数组分别表示三对角方程组的下对角线、主对角线、上对角线和常数项,x数组表示方程组的解。函数TDMA实现追赶法求解三对角方程组。
阅读全文