高斯消元算法C++
时间: 2023-07-10 17:09:33 浏览: 129
高斯消元算法是一种线性方程组求解方法,可以通过将系数矩阵化为一个上三角矩阵,从而求解出未知数的值。
以下是使用C++实现高斯消元算法的示例代码:
```c++
#include <iostream>
using namespace std;
const int N = 100;
int main()
{
int n; // 系数矩阵的行数(也是列数)
double a[N][N], b[N]; // 系数矩阵和常数向量
double ans[N]; // 存储解向量
// 输入系数矩阵和常数向量
cout << "请输入系数矩阵和常数向量:" << endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cin >> a[i][j];
cin >> b[i];
}
// 高斯消元
for (int k = 0; k < n; k++) // 第k列
{
int p = k;
for (int i = k; i < n; i++) // 选主元
if (abs(a[i][k]) > abs(a[p][k]))
p = i;
if (p != k) // 交换第k行和第p行
{
for (int j = k; j < n; j++)
swap(a[k][j], a[p][j]);
swap(b[k], b[p]);
}
for (int i = k + 1; i < n; i++) // 消元
{
double f = a[i][k] / a[k][k];
for (int j = k + 1; j < n; j++)
a[i][j] -= f * a[k][j];
b[i] -= f * b[k];
}
}
// 回带求解
for (int i = n - 1; i >= 0; i--)
{
ans[i] = b[i];
for (int j = i + 1; j < n; j++)
ans[i] -= a[i][j] * ans[j];
ans[i] /= a[i][i];
}
// 输出解向量
cout << "解向量为:" << endl;
for (int i = 0; i < n; i++)
cout << ans[i] << " ";
return 0;
}
```
在上面的代码中,我们首先输入系数矩阵和常数向量,然后执行高斯消元算法,将系数矩阵化为一个上三角矩阵。接着,我们使用回带法求解未知数的值,并将结果输出。
阅读全文