用追赶法解50×50的三对角方程组Ax=b的C语言代码
时间: 2023-07-24 21:53:38 浏览: 38
下面是使用追赶法解50x50的三对角方程组Ax=b的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 50
int main()
{
double a[N], b[N], c[N], x[N], d[N];
int i, j;
// 初始化系数矩阵和右端向量
for (i = 0; i < N; i++) {
a[i] = -1.0;
b[i] = 2.0;
c[i] = -1.0;
d[i] = sin((i + 1) * M_PI / (N + 1));
}
// 追赶法求解
for (i = 1; i < N; i++) {
b[i] -= a[i] * c[i - 1] / b[i - 1];
d[i] -= a[i] * d[i - 1] / b[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];
}
// 输出解向量
for (i = 0; i < N; i++) {
printf("x[%d] = %lf\n", i, x[i]);
}
return 0;
}
```
以上代码中,`a`、`b`、`c`数组分别存储三对角矩阵的下对角线、主对角线和上对角线元素,`x`数组存储解向量,`d`数组存储右端向量。追赶法的求解过程包括两个阶段,第一阶段是将系数矩阵化为上三角矩阵,第二阶段是回带求解解向量。在第一阶段中,从第二行开始,用主对角线元素除以上一行的主对角线元素,再用下对角线元素乘以这个商减去本行的下对角线元素,得到新的主对角线元素,用上对角线元素乘以这个商减去本行的上对角线元素,得到新的上对角线元素。在第二阶段中,从最后一行开始,用右端向量元素除以主对角线元素,得到最后一行的解,然后从倒数第二行开始,用右端向量元素减去下一行解乘以下对角线元素,再除以本行的主对角线元素,得到本行的解。最后输出解向量。