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

📄 123.cpp

📁 用GAUSS列主元消去法解线性方程组的计算机程序
💻 CPP
字号:
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
void abc(double *[],double[],int);
void main()
{
 int n,i,j,k,t;
 cout<<"输入方程的元数:";
 cin>>n;
 double **a=new double *[n],max;
 double *b=new double[n];
 double *temp=new double[n+1];
 if(a==0||b==0||temp==0)
 {
  cout<<"动态内存申请失败程序终止执行\n";
  exit(1);
 }
 for(i=0;i<n;i++)
 {
  a[i]=new double[n];
  if(a[i]==0)
  {
  cout<<"动态内存申请失败程序终止执行\n";
  exit(1);
  }
 }
 for(i=0;i<n;i++)
 {
  cout<<"输入第"<<i+1<<"个方程的系数:";
  for(j=0;j<n;j++)
   cin>>a[i][j];
 }
 cout<<"输入等号右边的"<<n<<"个数:";
 for(i=0;i<n;i++)
  cin>>b[i];
 for(k=n-1;k>0;k--)
 {
  max=fabs(a[0][k]);
  for(int m=0;m<=k;m++)
  {
   if(fabs(a[m][k])>max)
   {
    max=fabs(a[m][k]);
    t=m;
   }
  }
  if(max==0)
  {
   cout<<"方程无解或有无数解\n";
   exit(0);
  } 
  for(m=0;m<=k;m++)
  {
   temp[m]=a[t][m];
   a[t][m]=a[k][m];
   a[k][m]=temp[m];
  }
  temp[n]=b[t];
  b[t]=b[k];
  b[k]=temp[n];
  for(i=0;i<k;i++)
  {
   for(j=0;j<k;j++)
    a[i][j]-=a[k][j]*a[i][k]/a[k][k];
   b[i]-=b[k]*a[i][k]/a[k][k];
   a[i][k]=0;
  }
 }
 if(a[0][0]==0)
 {
  cout<<"方程无解或有无数解\n";
  exit(0);
 }
 cout<<"方程的"<<n<<"个根为:";
 abc(a,b,n-1);
 cout<<endl;
 for(i=0;i<n;i++)
  delete[] a[i];
 delete[] a; delete[] b; delete[] temp;
}
void abc(double*a[],double b[],int i)
{
 if(i==0) 
  cout<<(b[i]/=a[i][i])<<'\t';
 else
 {
  abc(a,b,i-1);
  for(int j=0;j<i;j++)
   b[i]-=b[j]*a[i][j];
  cout<<(b[i]/=a[i][i])<<'\t';
 }
}

⌨️ 快捷键说明

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