//目标 用高斯消去法求线性方程的根 //C++实现 #include"stdio.h"#include"iostream"#include"conio.h" using namespace std; class guass{ public: guass(int n,double t); void begin(); void display(); int n; // GUASS迭代的规模 double e; double a[4][4]; double b[4];}; guass::guass(int m,double t){ n=m; e=t; } void guass::begin(){ int k=1; while(k<n) { double m; for(int i=k+1;i<=n;i++) { m=a[i][k]/a[k][k]; b[i]=b[i]-b[k]*m; for(int j=k+1;j<=n;j++) a[i][j]=a[i][j]-a[k][j]*m; } k++; } if(k>=n) { b[n]=b[n]/a[n][n]; for(int i=n-1;i>=1;i--) { double s=0.0000000; for(int j=i+1;j<=n;j++) s=s+a[i][j]*b[j]; b[i]=(b[i]-s)/a[i][i]; } } }void guass::display(){ cout<<"输出最终解为:"; for(int i=1;i<=n;i++) cout<<" x"<<i<<"="<<b[i]; } int main(){ int n; double e; cout<<"输入GUASS消去的规模:"; cin>>n; cout<<endl; cout<<"输入误差限:"; cin>>e; guass gu(n,e); cout<<"输入A:"<<endl; for(int i=1;i<4;i++) for(int j=1;j<4;j++) cin>>gu.a[i][j]; cout<<"输入B:"<<endl; for(i=1;i<4;i++) cin>>gu.b[i]; gu.begin(); gu.display(); getch(); return 1;} 以上程序在DEV C++ VC++6.0中调试通过

评论