C++高斯列主元消去法
时间: 2024-05-23 07:07:48 浏览: 167
高斯列主元素消去法(C++).rar_site:www.pudn.com_高斯消去法c++
5星 · 资源好评率100%
以下是使用C++实现的列主元高斯消去法的代码,该代码使用了部分引用中的算法原理:
```c++
#include<iostream>
#include<cmath>
using namespace std;
const int N=100;
double a[N][N],b[N],x[N];
// 求解方程组
void Gauss(int n) {
const double eps=1e-10;
int i,j,k,r;
double maxp,t;
for (k=1;k<=n;k++) {
maxp=0;
r=k;
for (i=k;i<=n;i++)
if (maxp<fabs(a[i][k])) maxp=fabs(a[r=i][k]);
if (maxp<eps) return;
if (r!=k) {
for (j=k;j<=n;j++) swap(a[k][j],a[r][j]);
swap(b[k],b[r]);
}
for (i=k+1;i<=n;i++) {
t=a[i][k]/a[k][k];
b[i]-=b[k]*t;
for (j=k+1;j<=n;j++) a[i][j]-=a[k][j]*t;
}
}
for (i=n;i>=1;i--) {
for (j=i+1;j<=n;j++) b[i]-=a[i][j]*x[j];
x[i]=b[i]/a[i][i];
}
}
int main() {
int n=3;
a=3, a=-0.1, a=-0.2, b=7.85;
a=0.1, a=7, a=-0.3, b=-19.3;
a=0.3, a=-0.2, a=10, b=71.4;
Gauss(n);
for (int i=1;i<=n;i++) cout<<"x["<<i<<"]="<<x[i]<<endl;
return 0;
}
```
该代码通过列主元高斯消元法对多元一次方程进行求解,其中`n`为方程的未知元个数,`a`为系数矩阵,`b`为常数矩阵,`x`为未知数的解。
阅读全文