資源描述:
《高斯約當消去法.docx》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、姓名吳嫻學號2011210927班級2011211123高斯約當消去法#include#include#include/*形成R矩陣函數(shù)*/voidxz(intm,floatres[10],intm1[],intm2[],floatr[][10]){inti,j,k;for(i=0;i0){r[k][k]=r[k][k]+res[i];//自電阻形成R值r[j][k]=r[j][k]-res[i];//互
2、電阻形成R值r[k][j]=r[j][k];//矩陣為對稱矩陣}r[j][j]=r[j][j]+res[i];//網孔獨有電阻僅算自電阻}}/*選列主元函數(shù)*/floatzu(floatalfa[],floateps,intny,intnp,inti,floatra[][11]){intir/*計數(shù)器*/,m,ic;floatp;alfa[0]=fabs(ra[i][i]);m=i;for(ir=i;ir<=ny;ir++){if(fabs(ra[ir][i])<=alfa[0])continue;alfa[0]=fabs(ra[ir][i])
3、;//如果該元素大于原主元,則更新主元m=ir;//確定主元的所在行數(shù)}if(alfa[0]<=eps)return(0.0);//若該列所有主元均近似為零,則該方程無唯一解alfa[0]=ra[m][i];//更新歸一因子if(m==1)return(1.0);for(ic=i;ic<=np;ic++){p=ra[m][ic];ra[m][ic]=ra[i][ic];ra[i][ic]=p;}//交換原主元與現(xiàn)主元所在行的所有電阻系數(shù)return(1.0);}/*求解方程的Gauss函數(shù)*/floatgauss(floatra[][11],f
4、loatvn[],intny){inti,j,k,np;floatdeta,eps,beta/*消元因子*/,alfa[2];//歸一因子eps=1.e-10;np=ny+1;//包括增廣部分for(i=1;i<=ny;i++){deta=1.0;deta=zu(alfa,eps,ny,np,i,ra);if(deta==0.0)return(deta);//電路無唯一解for(j=i;j<=np;j++)ra[i][j]=ra[i][j]/alfa[0];//主元歸一for(k=1;k<=ny;k++){if(k==i)continue;be
5、ta=ra[k][i];//對于非對角線電阻系數(shù)來確定消元因子for(j=i;j<=np;j++)ra[k][j]=ra[k][j]-beta*ra[i][j];//消元}}for(i=1;i<=ny;i++)vn[i]=ra[i][np];//電流解即為增廣部分的值return(deta);}intmain(){floatres[20]/*存儲第i個電阻值*/,r[10][10]/*存儲電阻矩陣rij*/,ra[10][11];//增廣矩陣,最大限度10列floatamps[10]/*電流矩陣*/,v[10]/*增廣(電壓值)部分*/,det
6、a;//消元因子inti,j,m,n,m1[20]/*與第i個網孔關聯(lián)的電阻*/,m2[20];//與第i個電阻相關聯(lián)的相鄰網孔的序號FILE*InputFile,*OutputFile;//文件流v[0]=0;/*輸入數(shù)據(jù)*/InputFile=fopen("Input.txt","r");//打開文件if(InputFile==NULL){printf("CannotopentheInputFile!");return0;}fscanf(InputFile,"%d%d",&n,&m);//讀取網孔數(shù),電阻數(shù)for(i=1;i7、++)fscanf(InputFile,"%f",&v[i]);//讀取增廣部分,即等式右邊部分for(i=0;i8、++)ra[i][j]=r[i][j];ra[i][n+1]=v[i];//補上增廣部分}//形成增廣矩陣/*打印RA矩陣*/OutputFile=f