用高斯列主元消元法解線(xiàn)性方程_第1頁(yè)
用高斯列主元消元法解線(xiàn)性方程_第2頁(yè)
用高斯列主元消元法解線(xiàn)性方程_第3頁(yè)
用高斯列主元消元法解線(xiàn)性方程_第4頁(yè)
用高斯列主元消元法解線(xiàn)性方程_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、沈 陽(yáng) 航 空 工 業(yè) 學(xué) 院 課程設(shè)計(jì)學(xué) 號(hào)2008040201105班 級(jí) 84020103姓 名 李榮飛指導(dǎo)教師 尹 航2009年 9月 11 日沈陽(yáng)航空工業(yè)學(xué)院課程設(shè)計(jì)任務(wù)書(shū)電子信息工程學(xué)院 電子信息工程專(zhuān)業(yè) 84020103班 學(xué)號(hào)2008040201105一、課程設(shè)計(jì)題目:用高斯列主元消元法解線(xiàn)性方程二、課程設(shè)計(jì)工作自2009年9月6日起至2009年9月11日止三、課程設(shè)計(jì)內(nèi)容:運(yùn)用所學(xué)的C語(yǔ)言知識(shí),編制和調(diào)試程序,具有如下功能:請(qǐng)用高斯列主元消元法解下列方程組:四、課程設(shè)計(jì)要求:程序質(zhì)量:l 貫徹結(jié)構(gòu)化程序設(shè)計(jì)思想。l 用戶(hù)界面友好,功能明確,操作方便;可以加以其它功能或修飾。l

2、 用戶(hù)界面中的菜單至少應(yīng)包括“輸入數(shù)據(jù)”、“開(kāi)始計(jì)算”、 “退出”3項(xiàng)。l 代碼應(yīng)適當(dāng)縮進(jìn),并給出必要的注釋?zhuān)栽鰪?qiáng)程序的可讀性。課程設(shè)計(jì)說(shuō)明書(shū):課程結(jié)束后,上交課程設(shè)計(jì)說(shuō)明書(shū)(打印稿和電子稿),其內(nèi)容如下:l 封面l 課程設(shè)計(jì)任務(wù)書(shū)l 目錄l 需求分析(分析題目的要求)l 程序流程圖(總體流程圖和主要功能模塊流程圖)l 核心技術(shù)的實(shí)現(xiàn)說(shuō)明及相應(yīng)程序段l 個(gè)人總結(jié)l 參考資料l 源程序及適當(dāng)?shù)淖⑨屩笇?dǎo)教師:_ 學(xué)生簽名:_沈 陽(yáng) 航 院 設(shè) 計(jì) 用 紙目錄一、需求分析1二、程序流程圖2三、核心技術(shù)的實(shí)現(xiàn)說(shuō)明及相應(yīng)程序段8四、個(gè)人總結(jié)11五、參考文獻(xiàn)11六、源程序1114一、需求分析經(jīng)過(guò)對(duì)程序設(shè)

3、計(jì)題目的分析可知,整個(gè)程序的設(shè)計(jì)實(shí)現(xiàn)大致分為三個(gè)模塊,分別是:輸入方程組,計(jì)算方程組,繼續(xù)運(yùn)算/退出。計(jì)算方程組模塊對(duì)應(yīng)三個(gè)函數(shù),其函數(shù)名和功能如下:一、交換行的距函數(shù)(huanhang):主要實(shí)現(xiàn)線(xiàn)性代數(shù)高斯列主元消元法求解線(xiàn)性方程組中的初等行變換。二、比較系數(shù)大小的函數(shù)(bijiao):實(shí)現(xiàn)比較系數(shù)大小的算法。三、實(shí)現(xiàn)菜單選擇的函數(shù)(caidan):使用戶(hù)界面友好,操作方便。 除上面介紹的功能之外,程序還具有“繼續(xù)運(yùn)算/退出”功能,可以在程序的一次運(yùn)行當(dāng)中循環(huán)執(zhí)行所有的功能,并根據(jù)需要,終止程序的執(zhí)行。二、程序流程圖1、程序總體結(jié)構(gòu)圖圖1: 程序總體結(jié)構(gòu)圖 輸出: 用Gauss列主元消元法

4、解線(xiàn)性方程組 輸出: 解方程組請(qǐng)按1.輸出: 退出程式請(qǐng)按2.輸入:所須選擇的序號(hào). 根據(jù)輸入信息進(jìn)行選擇2 1 其他退出 調(diào)用 輸出 error Yunsuan 調(diào)用 caidan() 調(diào)用 caidan() 圖1程序總體結(jié)構(gòu)圖2、具體功能框圖(1)界面 caidan函數(shù)圖2 caidan函數(shù)輸出: 繼續(xù)運(yùn)算按 1 ,退出程序按 2! 根據(jù)getcher()值選擇Enter Ecs 其他調(diào)用 退出 輸出: 不合法的輸入!Yunsuan 調(diào)用 caidan()(2) 比較 bijiao函數(shù)圖3: bijiao函數(shù) temp=0 i=k 當(dāng)itemp 真 假 temp=Aik的絕對(duì)值flag=i

5、 return(temp) (3) 交換行的矩函數(shù) huanhang函數(shù) i=1 當(dāng)i=u+1時(shí) A0i=Ari i+ i=1 當(dāng)i=u+1時(shí) Ari=Aki i+ i=1 當(dāng)i=u+1 時(shí) Aki=A0i i+ 圖4: huanhang函數(shù)(4) 運(yùn)算 yunsuan函數(shù)輸出: 輸入方程組的維數(shù):n=輸入:n輸出: 現(xiàn)在輸入系數(shù)矩陣A和向量b: i=1 當(dāng)i=n 輸出:請(qǐng)輸入系數(shù)和向量 j=1 當(dāng) i=n+1時(shí) 輸入Aij j+ i+ k=1 當(dāng)k=n-1時(shí) ark=bijiao(k) ark=0 真 假 輸出:此方程組不合法!error! flag!=k真 假 調(diào)用caidan() 調(diào)用h

6、uanhang()并代入flog,k的值 i=k+1 (接下頁(yè)) 當(dāng) 接上一頁(yè): i=k+1 (接上一頁(yè)) 當(dāng)i=n i=k+1 當(dāng) j=1時(shí) me=0 j=k+1 當(dāng)i=n me=me+Akj*Xj j+ xk=(Akn+1-me)/Akk k- i=1 (接下一頁(yè)) 接上一頁(yè): i=1(接上一頁(yè)) 當(dāng)i=n時(shí) 輸出: i,xi i+ 調(diào)用caidan()圖5: yunsuan函數(shù)三、核心技術(shù)的實(shí)現(xiàn)說(shuō)明及相應(yīng)程序段本程序一共由四個(gè)自定義函數(shù)和一個(gè)主函數(shù)組成,其中主函數(shù)以菜單的形式調(diào)用其他函數(shù)來(lái)實(shí)現(xiàn)要求的所有功能。在這些函數(shù)當(dāng)中,比較系數(shù)大小的函數(shù)、運(yùn)算函數(shù)是程序中較為核心的部分,下面分別進(jìn)行

7、說(shuō)明。1、比較系數(shù)大小的函數(shù) 比較系數(shù)大小的函數(shù)主要是為 運(yùn)算函數(shù) 所做準(zhǔn)備的, fabs是求雙精度浮點(diǎn)數(shù)的絕對(duì)值的函數(shù)。 輸入?yún)?shù)是雙精度浮點(diǎn)數(shù),計(jì)算結(jié)果送返絕對(duì)值,也是雙精度浮點(diǎn)數(shù)這樣才可以保證以前已經(jīng)存在的數(shù)據(jù)不丟失。具體的程序段如下:float bijiao(int k) /*比較系數(shù)大小的函數(shù)*/int i;float temp=0;for(i=k;itemp)temp=fabs(Aik);flag=i;return temp;2、運(yùn)算函數(shù) 運(yùn)算函數(shù)是本程序的主要部分,首先輸入系數(shù)和向量后存入數(shù)組,判斷方程是否合法,不合法則返回菜單,然后通過(guò)循環(huán)解二維數(shù)組,最后輸出結(jié)果i,xi,具體

8、程序段如下: float yunsuan()float xNUMBER; /*此數(shù)組用于存放方程解*/int r,k,i,j;printf(nn 輸入方程組的維數(shù):n=);scanf(%d,&n);printf( nn現(xiàn)在輸入系數(shù)矩陣A和向量b:);for(i=1;i=n;i+ )printf(nn請(qǐng)輸入a?-a%d%d系數(shù)和向量b%d:,i,i,n); /*實(shí)現(xiàn)將每一行中的系數(shù)和向量一次性輸入,數(shù)之間用空格格開(kāi),輸完后回車(chē)確定*/for(j=1;j=n+1;j+ ) /*將剛才輸入的數(shù)存入數(shù)組*/scanf(%f,&Aij);for(k=1;k=n-1;k+ ) ark=bijiao(k);

9、if(ark=0) /*判斷方程是否為線(xiàn)性方程,即是否合法*/printf(nn此方程組不合法!error!);caidan(); else if(flag!=k)huanhang(flag,k);for(i=k+1;i=n;i+ )for(j=k+1;j=1;k-)float me=0;for(j=k+1;j=n;j+ )me=me+Akj*xj;xk=(Akn+1-me)/Akk;for(i=1;i=n;i+ )printf( nnx%d=%f,i,xi);四、個(gè)人總結(jié)這次課設(shè)讓我更熟悉的掌握了通過(guò)C語(yǔ)言運(yùn)用高斯定理解方程組,也使我對(duì)二維數(shù)組的認(rèn)識(shí)更加深入了解,也對(duì)C語(yǔ)言有了更深入的學(xué)習(xí)研

10、究,我已感覺(jué)到我已經(jīng)從C語(yǔ)言的門(mén)口邁入了殿堂,對(duì)C語(yǔ)言有了更好的認(rèn)識(shí)。在完成程序中,遇到過(guò)較大的困難,但通過(guò)重新深入教材和對(duì)資料的理解,最終逐步完成。五、參考文獻(xiàn)1 譚浩強(qiáng)C程序設(shè)計(jì)北京:清華大學(xué)出版社,20052 劉成等C語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)與習(xí)題集北京:中國(guó)鐵道出版社,2006六、源程序#include#include#include#define NUMBER 20float ANUMBERNUMBER+1 ,ark;int flag,n;huanhang(int r,int k);float bijiao(int k);caidan();float yunsuan();char cel

11、ect;void main()printf(nn用Gauss列主元消元法解線(xiàn)性方程組);printf(nn1.解方程組請(qǐng)按1.);printf(nn2.退出程式請(qǐng)按2.);celect=getchar();switch(celect)case 2 :exit(0);case 1 :yunsuan();default:printf(error);caidan();caidan();float yunsuan()float xNUMBER; /*此數(shù)組用于存放方程解*/int r,k,i,j;printf(nn 輸入方程組的維數(shù):n=);scanf(%d,&n);printf( nn現(xiàn)在輸入系數(shù)矩

12、陣A和向量b:);for(i=1;i=n;i+ )printf(nn請(qǐng)輸入a0-a%d%d系數(shù)和向量b%d:,i,i,n);printf(n(即將每一行中的系數(shù)和向量一次性輸入,數(shù)之間用空格格開(kāi),輸完后回車(chē)確定)n); /*實(shí)現(xiàn)將每一行中的系數(shù)和向量一次性輸入,數(shù)之間用空格格開(kāi),輸完后回車(chē)確定*/for(j=1;j=n+1;j+ ) /*將剛才輸入的數(shù)存入數(shù)組*/scanf(%f,&Aij);for(k=1;k=n-1;k+ ) ark=bijiao(k);if(ark=0) /*判斷方程是否為線(xiàn)性方程,即是否合法*/printf(nn此方程組不合法!error!);caidan(); els

13、e if(flag!=k)huanhang(flag,k);for(i=k+1;i=n;i+ )for(j=k+1;j=1;k-)float me=0;for(j=k+1;j=n;j+ )me=me+Akj*xj;xk=(Akn+1-me)/Akk;for(i=1;i=n;i+ )printf( nnx%d=%f,i,xi);return caidan();huanhang(int r,int k) /*交換行的矩函數(shù)*/int i;for(i=1;i=n+1;i+ )A0i=Ari;for(i=1;i=n+1;i+ )Ari=Aki;for(i=1;i=n+1;i+ )Aki=A0i;float bijiao(int k) /*比較系數(shù)大小

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論