⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 高斯消去解方程组c++程序
💻
字号:
#include <iostream> 
#include <fstream> 
#include <iomanip> 
#include <cmath> 
#include <algorithm> 

using namespace std; 

ifstream fin("guass.in"); 

#define NN 100 
                                 //    g是系数巨阵n*n,b是增广向量n, 
double g[NN][NN],b[NN],x[NN];    //    x是方程组的解n维。 
int n;                           //    下标一律以零开始计算。 
                                 // 
bool guass();                    //    guass()函数对以上参数进行求解方程组 
                                 //    并将结果放入x中。 

void outg(); 
void in(); 

int main() 
{ 
   fin>>n; 
   in(); 
   if (!guass()) cout<<"No solution!"<<endl; 
      else{ 
         for (int i=0;i<n;i++) 
            cout<<"x [ "<<i<<" ]= "<<x<<endl; 
         cout<<endl; 
         } 


   getchar(); 
   fin.close(); 
   return 0; 
} 
void in() 
{ 
   int i,j; 
   for (i=0;i<n;i++)  { 
      for (j=0;j<n;j++) 
         fin>>g[j]; 
      fin>>b; 
      } 
   return; 

} 

bool guass() 
{ 
   int i,j,k,p; 
   int flag[NN]; 
   double l; 
   memset(flag,0,sizeof(flag)); 

   for (i=0;i<n;i++){ 
      p=-1; 
      for (j=0;j<n;j++) 
         if (!flag[j]) 
         if (fabs(g[j]-0.0)>1e-8) 
            if (p==-1) p=j; 
               else 
                  if (fabs(g[p])+1e-8<=fabs(g[j])) p=j; 
      cout<<"p="<<p<<endl; 
      flag[p]=1; 
      if (p==-1) return false; 
      for (j=0;j<n;j++) 
         if (p!=j){ 
            l=g[j]/g[p]; 
            for (k=i;k<n;k++) 
               g[j][k]-=g[p][k]*l; 
            b[j]-=b[p]*l; 
            } 
       outg(); 
      } 

   for (i=0;i<n;i++) 
      for (j=0;j<n;j++) 
         if (fabs(g[j]-0.0)>1e-8){ 
            x[j]=b/g[j]; 
            break; 
         } 
   return true; 

} 

void outg() 
{ 
   int i,j; 
   cout.setf(ios::fixed); 
   cout.precision(2); 
    for (i=0;i<n;i++){ 
      for (j=0;j<n;j++) 
         cout<<setw(8)<<g[j]; 
      cout<<setw(8)<<b; 
      cout<<endl; 
      } 
   return; 

} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -