追赶法解线性方程组c++
时间: 2023-10-18 11:10:29 浏览: 199
追赶法解线性方程组
3星 · 编辑精心推荐
追赶法是一种用于求解三对角矩阵线性方程组的方法,其时间复杂度为O(n),其中n为矩阵的阶数。下面是使用C++实现追赶法求解三对角矩阵线性方程组的代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
vector<double> thomas_algorithm(vector<double> a, vector<double> b, vector<double> c, vector<double> d) {
int n = d.size();
vector<double> x(n);
for (int i = 1; i < n; i++) {
double 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 (int i = n - 2; i >= 0; i--) {
x[i] = (d[i] - c[i] * x[i + 1]) / b[i];
}
return x;
}
int main() {
vector<double> a = {0, 1, 2, 3}; // 下对角线
vector<double> b = {4, 5, 6, 7}; // 主对角线
vector<double> c = {8, 9, 10, 0}; // 上对角线
vector<double> d = {11, 12, 13, 14}; // 常数向量
vector<double> x = thomas_algorithm(a, b, c, d);
for (int i = 0; i < x.size(); i++) {
cout << "x[" << i << "] = " << x[i] << endl;
}
return 0;
}
```
其中,a、b、c分别为三对角矩阵的下对角线、主对角线和上对角线,d为常数向量,x为待求解的未知向量。在算法的实现中,我们首先对矩阵进行了LU分解,然后通过回代的方式求解出了未知向量x。
阅读全文