追赶法解线性方程组c++
时间: 2023-10-18 17:08:03 浏览: 236
追赶法(也称Thomas算法)是一种常用的解三对角线性方程组的方法。下面是C++代码实现追赶法解线性方程组:
```c++
#include <iostream>
#include <vector>
using namespace std;
// 追赶法解三对角线性方程组
vector<double> tridiagonal(vector<double> a, vector<double> b, vector<double> c, vector<double> d) {
int n = a.size();
vector<double> x(n);
for (int i = 1; i < n; i++) {
double 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];
}
return x;
}
int main() {
// 解方程组 2x + 3y + 4z = 5, 3x + 4y + 5z = 6, 4x + 5y + 6z = 7
vector<double> a = {0, 3, 4}; // 下对角线,a[0]无用
vector<double> b = {2, 4, 6}; // 主对角线
vector<double> c = {3, 5, 0}; // 上对角线,c[n-1]无用
vector<double> d = {5, 6, 7}; // 常数项
vector<double> x = tridiagonal(a, b, c, d); // 解方程组
for (double xi : x) {
cout << xi << " ";
}
cout << endl; // 输出解:-1 2/3 -1/3
return 0;
}
```
上述代码中,`tridiagonal`函数的参数`a`、`b`、`c`、`d`分别表示三对角线性方程组的下对角线、主对角线、上对角线和常数项。函数返回值为方程组的解向量。在函数中,首先进行了一次消元,将方程组变为上三角形式,然后再通过回代求解出未知量。
阅读全文