資源描述:
《高斯列主消元法法和LU分解法.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、高斯列主消元法:#include#include#defineN10intmain(){inti=0,j=0,r=0,n=0,k=1;floata[N][N],x[N],max=-1,sum1=0,sum2=0;//輸入矩陣維數(shù)printf("Pleaseentern02、{for(i=k;i<=n;i++){if(fabs(a[i][k])>max){max=a[i][k];r=i;}if(a[r][k]==0){printf("Cannotsolve!");return0;}}//換行for(j=1;j<=n+1;j++){sum1=a[k][j];a[k][j]=a[r][j];a[r][j]=sum1;}//將矩陣化為上三角矩陣for(i=k+1;i<=n;i++){for(j=k+1;j<=n+1;j++){a[i][j]=a[i][j]-(a[i][k])*(a[k][j])/(a[k][k]);}}k=k+1;max=-1;}while
3、(k<(n-1));//求x[]x[n]=(a[n][n+1])/(a[n][n]);for(k=n-1;k>=1;k--){for(j=k+1;j<=n;j++)sum2=sum2+(a[k][j])*(x[j]);x[k]=(a[k][n+1]-sum2)/(a[k][k]);sum2=0;}//輸出結(jié)果for(i=1;i<=n;i++){printf("x[%d]=%f",i,x[i]);}while(1);return0;}LU分解法:#include#include#defineN10//矩陣大小范圍/**使用已經(jīng)求出的x,向前計(jì)算x
4、(供getx()調(diào)用)*floata[][]矩陣U*floatx[]方程組解*inti解的序號(hào)(數(shù)組X元素序號(hào))*intn矩陣大小*return公式中需要的和*/floatgetmx(floata[N][N],floatx[N],inti,intn){floatmx=0;intr;for(r=i+1;r5、[N][N],floaty[N],inti,intn){floatmy=0;intr;for(r=0;r6、n-1]);else//計(jì)算其他x值(對(duì)于公式中的求和部分,需要調(diào)用getmx()函數(shù))result=(float)((b[i]-getmx(a,x,i,n))/a[i][i]);returnresult;}/**解數(shù)組Y,計(jì)算其中一元素值*floata[][]矩陣L*floaty[]數(shù)組Y*inti數(shù)組Y元素序號(hào)*intn矩陣大小*return數(shù)組Y的第i個(gè)元素值*/floatgety(floata[N][N],floatb[N],floaty[N],inti,intn){floatresult;if(i==0)//計(jì)算第一個(gè)y的值result=float(b[i]/a[i][i])
7、;else//計(jì)算其他y值(對(duì)于公式中的求和部分,需要調(diào)用getmy()函數(shù))result=float((b[i]-getmy(a,y,i,n))/a[i][i]);returnresult;}intmain(){floatl[N][N]={0};//定義L矩陣floatu[N][N]={0};//定義U矩陣floaty[N]={0};//定義數(shù)組Yfloatx[N]={0};//定義數(shù)組Xfloata[N][N];//定義系數(shù)矩陣floatb