c解線性方程組的幾種方法_第1頁
c解線性方程組的幾種方法_第2頁
c解線性方程組的幾種方法_第3頁
c解線性方程組的幾種方法_第4頁
c解線性方程組的幾種方法_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、函數(shù)聲明區(qū)函數(shù)聲明區(qū)/輸入方程組/打印主菜單/輸入選擇/Cramer算法解方程組/Gauss列主元解方程組/Gauss全主元解方程組/用Doolittle算法解方程組bNumber);/判斷是否行/將行列式Doolittle分解/DODoolittle結(jié)果/計算行列式/根據(jù)列坐標(biāo)的排列計算的值*a1A_y1/交換A_ym,A_yi/交換aj與b;/分別交換a和b中的m與/Gauss列主元消去法/Gauss全主元消去法/根據(jù)Gauss消去法結(jié)果計算未知量/交換a中的m和n列/交換x中的xm和xn/恢復(fù)數(shù)據(jù)/解線性方程組#include#include#include/全局變量定義區(qū)constin

2、tNumber=15;/方程最大個數(shù)doubleaNumberNumber,bNumber,copy_aNumberNumber,copy_bNumber;/系數(shù)行列式intA_yNumber;/a中隨著橫坐標(biāo)增加列坐標(biāo)的排列順序,如a00,a12,a21.則A_y=0,2,1.;intlenth,copy_lenth;/方程的個數(shù)doublea_sum;/計算行列式的值char*x;/未知量a,b,c的載體voidinput();voidprint_menu();intchoose();voidcramer();voidgauss_row();voidguass_all();voidDool

3、ittle();aNumber,doubleintDoolittle_check(doubleaNumber,double式0,若是,調(diào)整為順序主子式全0voidxiaoqu_u_l();voidcalculate_u_l();double&calculate_A(intn,intm);doublequanpailie_A();A_y=0,2,1,得sum=a0A_y0a2A_y2=a00*a12*a21;voidexchange(intm,inti);voidexchange_lie(intj);voidexchange_hang(intm,intn);兩行voidgauss_row_xia

4、oqu();voidgauss_all_xiaoqu();voidgauss_calculate();的值voidexchange_a_lie(intm,intn);voidexchange_x(intm,intn);voidrecovery();/主函數(shù)voidmain()/輸入方程/輸入方程/打印主菜單/選擇解答方式while(flag)print_menu();flag=choose();/函數(shù)定義區(qū)voidprint_menu()system(cls);cout方程系數(shù)和常數(shù)矩陣表示如下:n;for(intj=0;jlenth;if(lenthNumber)coutItistoobig

5、.n;return;x=newcharlenth;for(i=0;ilenth;i+)xi=a+i;/輸入方程矩陣/提示如何輸入coutaij;cinbi;/備份數(shù)據(jù)for(i=0;ilenth;i+)for(j=0;jlenth;j+)copy_aij=aij;for(i=0;ilenth;i+)copy_bi=bi;copy_lenth=lenth;/輸入選擇intchoose()intchoice;charch;cinchoice;switch(choice)case1:cramer();break;case2:gauss_row();break;case3:guass_all();br

6、eak;case4:Doolittle();break;case5:return0;default:cout輸入錯誤,請重新輸入choose();break;coutn是否換種方法求解(Y/N):cinch;if(ch=n|ch=N)return0;recovery();coutnnn;return1;TOC o 1-5 h z/用克拉默法則求解方程.voidcramer()inti,j;doublesum,sum_x;charch;/令第i行的列坐標(biāo)為icout用克拉默(Cramer)法則結(jié)果如下:n;for(i=0;ilenth;i+)A_yi=i;sum=calculate_A(lent

7、h,0);if(sum!=0)cout系數(shù)行列式不為零,方程有唯一的解for(i=0;ilenth;i+)ch=a+i;a_sum=0;for(j=0;jlenth;j+)A_yj=j;exchange_lie(i);sum_x=calculate_A(lenth,0);coutendlch=i)l+;for(p=1,i=0;ilenth;i+)p*=aiA_yi;sum+=p*(l%2=0)?(1):(-1);returnsum;/高斯列主元排列求解方程voidgauss_row()inti,j;gauss_row_xiaoqu();/用高斯列主元消區(qū)法將系數(shù)矩陣變成一個上三角矩陣for(i

8、=0;ilenth;i+)for(j=0;jlenth;j+)coutsetw(10)setprecision(5)aij;coutsetw(10)biamaxij)maxi=i;if(maxi!=k)exchange_hang(k,maxi);/for(i=k+1;ilenth;i+)lik=aik/akk;for(j=k;jlenth;j+)aij=aij-akj*lik;bi=bi-bk*lik;/高斯全主元排列求解方程voidguass_all()inti,j;gauss_all_xiaoqu();for(i=0;ilenth;i+)for(j=0;jlenth;j+)coutsetw

9、(10)setprecision(5)aij;coutsetw(10)biendl;if(alenth-1lenth-1!=0)cout系數(shù)行列式不為零,方程有唯一的解:n;gauss_calculate();for(i=0;ilenth;i+)/輸出結(jié)果for(j=0;xj!=a+i&jlenth;j+);coutxj=bjendl;elsecout系數(shù)行列式等于零,方程沒有唯一的解.n;voidgauss_all_xiaoqu()/Gauss全主元消去法inti,j,k,maxi,maxj;doublelik;cout用Gauss全主元消去法結(jié)果如下:n;for(k=0;klenth-1;

10、k+)for(maxi=maxj=i=k;ilenth;i+)for(j=k;jamaximaxj)maxi=i;maxj=j;if(maxi!=k)exchange_hang(k,maxi);if(maxj!=k)exchange_a_lie(maxj,k);/交換兩列exchange_x(maxj,k);for(i=k+1;ilenth;i+)lik=aik/akk;for(j=k;j=0;i-)for(j=i+1,sum_ax=0;jlenth;j+)sum_ax+=aij*bj;bi=(bi-sum_ax)/aii;voidDoolittle()/DoolittlevoidDoolit

11、tle()/Doolittle消去法計算方程組doubletemp_aNumberNumber,temp_bNumber;inti,j,flag;for(i=0;ilenth;i+)for(j=0;j=0;i-)for(j=i+1,sum_ax=0;jlenth;j+)sum_ax+=aij*bj;bi=(bi-sum_ax)/aii;voidxiaoqu_u_l()/將行列式按Doolittle分解inti,j,n,k;doubletemp;for(i=1,j=0;ilenth;i+)aij=aij/a00;for(n=1;nlenth;n+)/求第n+1層的上三角矩陣部分即Ufor(j=n

12、;jlenth;j+)for(k=0,temp=0;kn;k+)temp+=ank*akj;anj-=temp;for(i二n+l;ilenth;i+)/求第n+1層的下三角矩陣部分即Lfor(k=0,temp=0;ktemp_amaxij)maxi=i;if(maxi!=k)exchange_hang(k,maxi);for(j=0;jlenth;j+)temp=temp_akj;temp_akj=temp_amaxij;temp_amaxij=temp;for(i=k+1;ilenth;i+)lik=temp_aik/temp_akk;for(j=k;jlenth;j+)temp_aij=

13、temp_aij-temp_akj*lik;temp_bi=temp_bi-temp_bk*lik;return0;if(temp_alenth-1lenth-1=0)return0;return1;/交換/交換a中和b兩行intj;doubletemp;for(j=0;jlenth;j+)temp=amj;amj=anj;anj=temp;temp=bm;bm=bn;bn=temp;voidexchange(intm,inti)/交換A_ym,A_yinttemp;temp=A_ym;A_ym=A_yi;A_yi=temp;voidexchange_lie(intj)/交換未知量b和第doubletemp;inti;for(i=0;ilenth;i+)temp=aij;aij=bi;bi=temp;a中的兩列voidexchange_a_lie(intm,intn)a中的兩列doubletemp;inti;for(i=0;ilenth;i+)temp=aim;aim=ain;ain=temp;voidexchange_x(intm,intn)/交換未

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論