資源描述:
《高斯列主消元法法和LU分解法電子版本.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、精品好文檔,推薦學(xué)習(xí)交流高斯列主消元法:#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、,&a[i][j]);}}do{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++)僅供學(xué)習(xí)與交流,如有侵權(quán)請聯(lián)系網(wǎng)站刪除謝謝8精品好文檔,推薦學(xué)習(xí)交流{for(j=k+1;j<=n+1;j++){a[i][j]=a[i][j]
3、-(a[i][k])*(a[k][j])/(a[k][k]);}}k=k+1;max=-1;}while(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;}僅供學(xué)習(xí)與交流,如有侵權(quán)請聯(lián)系網(wǎng)站刪除謝謝
4、8精品好文檔,推薦學(xué)習(xí)交流LU分解法:#include#include#defineN10//矩陣大小范圍/**使用已經(jīng)求出的x,向前計算x(供getx()調(diào)用)*floata[][]矩陣U*floatx[]方程組解*inti解的序號(數(shù)組X元素序號)*intn矩陣大小*return公式中需要的和*/floatgetmx(floata[N][N],floatx[N],inti,intn){floatmx=0;intr;for(r=i+1;r5、y(供gety()調(diào)用)*floata[][]矩陣L*floaty[]數(shù)組Y*inti數(shù)組Y元素序號*intn矩陣大小*return公式中需要的和*/floatgetmy(floata[N][N],floaty[N],inti,intn){floatmy=0;intr;for(r=0;r6、解(數(shù)組X的第i個元素值)*/floatgetx(floata[N][N],floatb[N],floatx[N],inti,intn){floatresult;if(i==n-1)//計算最后一個x的值result=(float)(b[i]/a[n-1][n-1]);else//計算其他x值(對于公式中的求和部分,需要調(diào)用getmx()函數(shù))result=(float)((b[i]-getmx(a,x,i,n))/a[i][i]);returnresult;}/**解數(shù)組Y,計算其中一元素值*floata[][]矩陣L*floaty[]數(shù)組Y*inti數(shù)組Y元素序號*intn矩
7、陣大小*return數(shù)組Y的第i個元素值*/floatgety(floata[N][N],floatb[N],floaty[N],inti,intn){floatresult;if(i==0)//計算第一個y的值result=float(b[i]/a[i][i]);else//計算其他y值(對于公式中的求和部分,需要調(diào)用getmy()函數(shù))result=float((b[i]-getmy(a,y,i,n))/a[i][i]);returnresult;}intmain(){flo