高斯正反算c++代码
时间: 2024-04-16 09:23:17 浏览: 31
高斯正反算(Gauss-Jordan elimination)是一种线性代数中常用的求解线性方程组的方法。下面是一个简单的C++代码示例,用于实现高正反算:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 高斯正反算函数
vector<double> gaussJordan(vector<vector<double>>& A, vector<double>& b) {
int n = A.size();
int m = A.size();
// 构造增广矩阵
vector<vector<double>> augmented(n, vector<double>(m + 1));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
augmented[i][j] = A[i][j];
}
augmented[i][m] = b[i];
}
// 高斯消元
for (int i = 0; i < n; i++) {
// 将当前列的主元素调整为非零值
if (augmented[i][i] == 0) {
int row = i + 1;
while (row < n && augmented[row][i] == 0) {
row++;
}
if (row == n) {
continue; // 当前列全为零,跳过
}
swap(augmented[i], augmented[row]);
}
// 将当前列的主元素变为1
double divisor = augmented[i][i];
for (int j = i; j <= m; j++) {
augmented[i][j] /= divisor;
}
// 将其他行的当前列变为0
for (int row = 0; row < n; row++) {
if (row != i) {
double factor = augmented[row][i];
for (int j = i; j <= m; j++) {
augmented[row][j] -= factor * augmented[i][j];
}
}
}
}
// 提取解向量
vector<double> solution(n);
for (int i = 0; i < n; i++) {
solution[i] = augmented[i][m];
}
return solution;
}
int main() {
// 示例输入
vector<vector<double>> A = {{2, 1, -1}, {-3, -1, 2}, {-2, 1, 2}};
vector<double> b = {8, -11, -3};
// 调用高斯正反算函数求解线性方程组
vector<double> solution = gaussJordan(A, b);
// 输出解向量
cout << "Solution: ";
for (double x : solution) {
cout << x << " ";
}
cout << endl;
return 0;
}
```
这段代码实现了高斯正反算的功能,通过调用`gaussJordan`函数传入系数矩阵`A`和常数向量`b`,可以得到线性方程组的解向量。在示例中,输入的系数矩阵`A`为一个3x3的矩阵,常数向量`b`为一个长度为3的向量。程序输出解向量。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)