预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

#include<iostream>#include<iomanip>#include<fstream>#include<cmath>usingnamespacestd;#defineMax50voidoutput(doublex[],intn){cout<<"Gauss消去法得到的原方程组的解为:"<<endl;for(intk=0;k<n;k++)cout<<"x"<<k+1<<"="<<x[k]<<"";}intmain(){ifstreamifile;ifile.open("zhilu.txt");doubledata[Max][Max+1];doublea[Max][Max+1],x[Max],sum,max,t;intn,row,line,i,j,k,l,ad,max_i;cout<<"输入信息矩阵的行数:"<<endl;cin>>row;cout<<"输入信息矩阵的列数:"<<endl;cin>>line;for(i=0;i<row;i++)for(j=0;j<line;j++)ifile>>data[i][j];cout<<"节点电压方程的阶数:"<<endl;cin>>n;for(i=0;i<n;i++)for(j=0;j<(n+1);j++)a[i][j]=0;for(i=0;i<row;i++){if(data[i][3]==1){if(data[i][1]*data[i][2]==0){if(data[i][1]>0)ad=data[i][1];elsead=data[i][2];a[ad-1][ad-1]+=data[i][4];}else{k=data[i][1]-1;l=data[i][2]-1;ad=data[i][4];a[k][k]=a[k][k]+ad;a[l][l]=a[l][l]+ad;a[k][l]=a[k][l]-ad;a[l][k]=a[l][k]-ad;}}else{if(data[i][1]*data[i][2]!=0){k=data[i][1]-1;l=data[i][2]-1;ad=data[i][4];a[k][n]=a[k][n]-ad;a[l][n]=a[l][n]+ad;}else{if(data[i][1]>0)l=data[i][1]-1;elsel=data[i][2]-1;ad=data[i][4];a[l][n]=a[l][n]+ad;}}}cout<<"计算机建立的节点电压方程为:"<<endl;for(i=0;i<n;i++){for(j=0;j<(n+1);j++)cout<<setw(6)<<a[i][j];cout<<endl;}for(k=0;k<n-1;k++)//选主元素{max=a[k][k];max_i=k;for(i=k+1;i<n;i++)if(fabs(a[i][k])>fabs(max)){max=a[i][k];max_i=i;}if(max==0)break;if(max_i!=k)//交换两行for(j=k;j<n+1;j++){t=a[k][j];a[k][j]=a[max_i][j];a[max_i][j]=t;}for(i=k+1;i<n;i++){a[i][k]=a[i][k]/-a[k][k];for(j=k+1;j<n+1;j++)a[i][j]=a[i][j]+a[i][k]*a[k][j];}//消元}if(max==0)cout<<"原方程组无解!"<<endl;else{for(k=n-1;k>=0;k--){sum=0;for(j=k+1;j<n;j++)sum=sum+a[k][j]*x[j];x[k]=(a[k][n]-sum)/a[k][k];}//回代output(x,n);cout<<endl;}return0;}