用追赶法解三对角方程组Ax=b的C语言代码
时间: 2023-07-24 20:36:06 浏览: 35
以下是用追赶法解三对角方程组Ax=b的C语言代码:
```c
#include <stdio.h>
void tridiagonal_solver(int n, double* a, double* b, double* c, double* x, double* y)
{
int i;
double beta;
y[0] = b[0];
for (i = 1; i < n; i++)
{
beta = a[i]/y[i-1];
y[i] = b[i] - beta*c[i-1];
}
x[n-1] = y[n-1]/y[n-1];
for (i = n-2; i >= 0; i--)
{
x[i] = (y[i] - c[i]*x[i+1])/y[i];
}
}
int main()
{
int n = 4;
double a[] = {0, 2, 3, 4};
double b[] = {5, 6, 7, 8};
double c[] = {9, 10, 11, 0};
double x[n], y[n];
tridiagonal_solver(n, a, b, c, x, y);
printf("Solution:\n");
for (int i = 0; i < n; i++)
{
printf("x[%d] = %f\n", i, x[i]);
}
return 0;
}
```
这里的例子是解一个由4个方程组成的三对角方程组,系数矩阵A的对角线元素为b,上对角线元素为c,下对角线元素为a。函数`tridiagonal_solver`就是追赶法的实现,将解存储在数组x中,辅助数组存储在数组y中。