東南大學(xué)土木工程專業(yè)c語言課程設(shè)計報告董旭._第1頁
東南大學(xué)土木工程專業(yè)c語言課程設(shè)計報告董旭._第2頁
東南大學(xué)土木工程專業(yè)c語言課程設(shè)計報告董旭._第3頁
東南大學(xué)土木工程專業(yè)c語言課程設(shè)計報告董旭._第4頁
東南大學(xué)土木工程專業(yè)c語言課程設(shè)計報告董旭._第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、東南大學(xué)C語言課程設(shè)計報告課程名稱: 計算機(jī)綜合課程設(shè)計 學(xué) 院: 土木工程學(xué)院 設(shè)計題目: 管網(wǎng)造價設(shè)計分析 級 別: B級 學(xué)生姓名: 董 旭 學(xué) 號: 05112517 同組學(xué)生: 學(xué) 號: 指導(dǎo)教師: 盧 瑞 華 2013年 9 月 19 日目 錄 TOC o 1-3 h z u 4模塊設(shè)計(主要模塊功能、源代碼、注釋(如函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調(diào)用關(guān)系描述等)91316心得體會及致謝17參考文獻(xiàn)18學(xué)生選題說明:以所發(fā)課程設(shè)計要求為準(zhǔn),請同學(xué)們仔細(xì)閱讀;本任務(wù)書提供的設(shè)計案例僅供選題參考;也可自選,但難易程度需難度相當(dāng);鼓勵結(jié)合本專業(yè)(土木工程、力學(xué))知識進(jìn)行選題,編制程序

2、解決專業(yè)實(shí)際問題。限2人選的題目可由1-2人完成(A級);限1人選的題目只能由1人單獨(dú)完成(B級); 設(shè)計總體要求:采用模塊化程序設(shè)計;鼓勵可視化編程;源程序中應(yīng)有足夠的注釋;學(xué)生可自行增加新功能模塊(視情況可另外加分);必須上機(jī)調(diào)試通過;注重算法運(yùn)用,優(yōu)化存儲效率與運(yùn)算效率;需提交源程序(含有注釋)及相關(guān)文件(數(shù)據(jù)或數(shù)據(jù)庫文件):提交設(shè)計報告書,具體要求見以下說明。設(shè)計報告格式:目錄課程設(shè)計任務(wù)書(功能簡介、課程設(shè)計要求);系統(tǒng)設(shè)計(包括總體結(jié)構(gòu)、模塊、功能等,輔以程序設(shè)計組成框圖、流程圖解釋);模塊設(shè)計(主要模塊功能、源代碼、注釋(如函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調(diào)用關(guān)系描述等);調(diào)試

3、及測試:(調(diào)試方法,測試結(jié)果的分析與討論,截屏、正確性分析);設(shè)計總結(jié):(編程中遇到的問題及解決方法);心得體會及致謝;參考文獻(xiàn)2.1 功能要求 對某地給水管網(wǎng)D=200mm以上的管道進(jìn)行了單位造價的綜合分析計算。造價構(gòu)成包括:(1)管材價格;(2)運(yùn)輸管理費(fèi)用;(3)施工費(fèi)用;(4)挖填溝槽費(fèi)用;(5)路面修復(fù)費(fèi)用;(6)消火栓費(fèi)用;(7)閘門費(fèi)用;(8)閘門井、支墩等構(gòu)造物;(9)管配件費(fèi)用;(10)特殊措施費(fèi)用。得到管徑與單價如表所示。 表1 管徑造價表管徑D(mm)200250300350400450500單價C(元/m)管徑D(mm)600700800900100011001200單

4、價C(元/m)試采用常規(guī)回歸分析,通過C語言編程確定管道造價的數(shù)學(xué)模型參數(shù)。管道造價的數(shù)學(xué)模型:C=a+b*Dz 式中:D管徑(m); C單位造價(元/m); a,b,z系數(shù)。查找得黃金分割最小二乘法:給排水管道系統(tǒng)的造價對于整個給排水系統(tǒng)工程來說尤為重要,管道的造價按管道單位長度造價乘以管段長度計算。通過建立水管單位長度造價與管道直徑的關(guān)系,通過優(yōu)化算法以最小化水管建設(shè)投資。傳統(tǒng)的方法應(yīng)用作圖法和黃金分割最小二乘法。作圖法本身就很粗糙,并且還要畫圖,受每個人的眼力影響較大,因此應(yīng)用性不大。黃金分割最小二乘法作為一種迭代方法,容易獲得局部最優(yōu)解,因此其結(jié)果明顯優(yōu)于其他方法。在我們研究兩個(x,

5、y)之間的相互關(guān)系時,通??梢缘玫揭幌盗谐蓪Φ臄?shù)據(jù)(x1,y1.x2,y2. xm,ym);將這些數(shù)據(jù)描繪在x -y直角坐標(biāo)系中,若發(fā)現(xiàn)這些點(diǎn)在一條直線附近,可以令這條如(式1-1)。Yj= a0 + a1 Xi (式1-1)其中:a0、a1 是任意實(shí)數(shù)為建立這直線方程就要確定a0和a1,應(yīng)用最小二乘法原理,將實(shí)測值Yi與利用(式1-1)計算值(Yj=a0+a1X)的離差(Yi-Yj)的平方和(Yi - Yj)2最小為“優(yōu)化判據(jù)”。令: = (Yi - Yj)2 (式1-2)把(式1-1)代入(式1-2)中得: = (Yi - a0 - a1Xi)2 (式1-3)當(dāng)(Yi-Yj)平方最小時,可

6、用函數(shù) 對a0、a1求偏導(dǎo)數(shù),令這兩個等于零。2(a0 + a1*Xi - Yi)(式1-4)2*Xi(a0 + a1*Xi - Yi)(式1-5)亦即:na0 + (Xi ) a1 = Yi (式1-6)(Xi ) a0 + (Xi2 ) a1 = (Xi*Yi) (式1-7)得到的兩個關(guān)于a0、 a1為未知數(shù)的兩個方程組,解這兩個方程組得出:a0 = (Yi) / n - a1(Xi) / n (式1-8)a1 = nXi Yi - (Xi Yi) / nXi2 - (Xi)2 ) (式1-9)這時把a(bǔ)0、a1代入(式1-1)中, 此時的(式1-1)就是我們回歸的元線性方程即:數(shù)學(xué)模型。在

7、回歸過程中,回歸的關(guān)聯(lián)式是不可能全部通過每個回歸數(shù)據(jù)點(diǎn)(x1,y1. x2,y2.xm,ym),為了判斷關(guān)聯(lián)式的好壞,可借助 “R”, “F”,剩余標(biāo)準(zhǔn)偏差“S”進(jìn)行判斷;“R”越趨近于 1 越好;“F”的絕對值越大越好;“S”越趨近于 0 越好。R = XiYi - m (Xi / m)(Yi / m)/ SQRXi2 - m (Xi / m)2Yi2 - m (Yi / m)2 (式1-10) *在(式1-1)中,n為,即實(shí)驗(yàn)次數(shù);Xi、Yi分別任意一組實(shí)驗(yàn)X、Y的數(shù)值。1a) 輸入信息:將數(shù)據(jù)的組數(shù)N和每一個管徑D以及其對應(yīng)的單位造價C輸入。b) 數(shù)據(jù)計算: A) 計算各管徑的和;B)計

8、算各單價的和;C)計算各單價的z次方的和;D)計算各單價的兩倍z次方的和;E)計算各單價的和的z次方。c) 存儲數(shù)據(jù):定義一個新的數(shù)組將得到的數(shù)據(jù)記錄進(jìn)去。d) 比較數(shù)據(jù): 采用冒泡法進(jìn)行比較,得出最小線性擬合方差時的系數(shù)值。e) 輸出結(jié)果 主菜單輸入功能求和功能計算功能排序功能輸出功能退出程序工作程序分析 輸入信息:將數(shù)據(jù)的組數(shù)14和每一個管徑D以及其對應(yīng)的單位造價C按表格所提供數(shù)據(jù)輸入。管徑D(mm)200250300350400450500單價C(元/m)管徑D(mm)600700800900100011001200單價C(元/m)數(shù)據(jù)求和: A) 計算各管徑的和;B)計算各單價的和;C

9、)計算各單價的z次方的和;D)計算各單價的兩倍z次方的和;E)計算各單價的和的z次方。 計算功能:將中所得結(jié)果代入黃金分割最小二乘法的公式 存儲記錄:定義一個數(shù)組將每一組所得a,b ,存入。 排序記錄:采用冒泡法,逐個比較新定義的數(shù)組中的值,出最小,并求出此時對應(yīng)的啊a,b,z。 退出程序。3. 模塊設(shè)計#include /這是編譯預(yù)處理指令#include /程序中要調(diào)用求平方根函數(shù)sqrt和求次方函數(shù)powint main() /定義主函數(shù) /主函數(shù)開始 float qhadd(float s21000,int e,int d); /對被調(diào)用函數(shù)qhadd的聲明 float qhad(fl

10、oat k21000,int f,int g,float z); /對被調(diào)用函數(shù)qhad的聲明 float qha(float p21000,int q,int t,float z); /對被調(diào)用函數(shù)qha的聲明 float qh(float o21000,int r,int v,float z); /對被調(diào)用函數(shù)qh的聲明 float q(float o21000,float r,float v,int n,float z); /對被調(diào)用函數(shù)q的聲明 float z,min; /定義a1,b1,c,z,min為單精度浮點(diǎn)型變量 int i,j,N; /定義i,j,N為整型變量 float a

11、1000,b1000,K1000; /定義a為包含1000個元素的一維數(shù)組 /定義b為包含1000個元素的一維數(shù)組 /定義k為包含1000個元素的一維數(shù)組 printf(Please enter N=); /輸出所指定的一行信息 scanf(%d,&N); /輸入變量N的值 float g21000,C,D,C1,D1,D2,D3,D4; /定義g為2*1000的二維數(shù)組 /定義C,D,C1,D1,D2,D3,D4為單精度浮點(diǎn)型變量 for(j=0;j2;j+) /控制循環(huán)次數(shù),j由0變到1,共循環(huán)2次 for(i=0;iN;i+) /控制循環(huán)次數(shù),i由0變到N-1,共循環(huán)N次 scanf(%

12、f,&gji); /執(zhí)行循環(huán)體,輸入二維數(shù)組g C=qhadd(g,1,N); /調(diào)用qhadd函數(shù),得到第二行所有元素的加和,放在C中 D=qhadd(g,0,N); /調(diào)用qhadd函數(shù),得到第一行所有元素的加和,放在D中 for(i=0,z=1;z=2;i+) C1=qhad(g,1,N,z); D1=qhad(g,0,N,z); D2=qha(g,0,N,z); D3=qh(g,0,N,z); ai=(C*D3-D2*D1)/(N*D3-pow(D1,2); bi=(C-ai*N)/D1; D4=q(g,ai,bi,101,z); Ki=sqrt(D4/N); z=z+0.01; fo

13、r(i=0,j=0,min=K0;i100;i+) if(Ki=min) min=Ki; j=i; printf(C=%fnD=%fnC1=%fnD1=%fnD2=%fnD3=%fn,C,D,C1,D1,D2,D3); printf(a1=%fnb1=%fnz=%fn,aj,bj,1+0.01*j); return 0;float qhadd(float s21000,int e,int d) /定義qhadd函數(shù) float sum=0; int x; for(x=0;xd;x+) sum=sum+sex; /累加求和 return(sum);float qhad(float k21000,

14、int f,int h,float z) /定義qhad函數(shù) float su=0; int y; for(y=0;yh;y+) su=su+pow(kfy,z); /累加求和 return(su);float qha(float p21000,int q,int t,float z) /定義qha函數(shù)float s=0; int u; for(u=0;ut;u+) s=s+(p(q+1)u)*(pow(pqu,z); /累加求和 return(s);float qh(float o21000,int r,int v,float z) /定義qh函數(shù)float l=0; int w; for(

15、w=0;wv;w+) l=l+pow(orw,(2*z); /累加求和 return(l);float q(float o21000,float r,float v,int n,float z) /定義q函數(shù) int i;float sum=0;for(i=0;in;i+)sum=sum+(r+v*(pow(o0i,z)-o1i); /累加求和return(sum);4. 調(diào)試及測試 開始界面: 輸入信息:輸入數(shù)據(jù)的組數(shù):輸入管徑:輸入單位造價: 輸出結(jié)果:調(diào)試中的問題:問題分析程序顯示在定義數(shù)據(jù)類型時,double和float型之間的轉(zhuǎn)換存在數(shù)據(jù)可能丟失的警告,但對于本題而言,數(shù)據(jù)不會溢出,

16、因此暫認(rèn)為可以。而且在全部定義為double型數(shù)據(jù)時易出現(xiàn)一些問題。所以個人在設(shè)計程序時將部分不會存在數(shù)據(jù)溢出的變量定義為float型。設(shè)計總結(jié)當(dāng)初一看到這個題是首先想到的是日常生活中較為常用的畫圖法,但經(jīng)過仔細(xì)研究題目和所給表格中的數(shù)據(jù)小數(shù)點(diǎn)要求較為精確,而畫圖法較為粗糙,因此畫圖法在此題中不太適合。之后我去校圖書館查看了一些和造價工程以及數(shù)學(xué)建模等方面有關(guān)的書籍,找出了黃金分割最小二乘法,發(fā)現(xiàn)此方法容易獲得最優(yōu)解,其結(jié)果明顯優(yōu)于其他方法,于是決定采用黃金分割最小二乘法的公式及原理來編寫程序求解此題的系數(shù)。在編寫成程序時,為了黃金分割最小二乘法的公式的計算方便定義了5個函數(shù),求取一些在黃金分

17、割最小二乘法的公式中需要用到的值。此外,本題中取百分之一為精確單位,若在某些工程中需要更為精確的計算結(jié)果,只需改變此程序中的幾個數(shù)值即可精確到萬分之一甚至百萬、億分之一。6. 心得體會及致謝 課程設(shè)計是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,當(dāng)今計算機(jī)應(yīng)用在生活中可以說得是無處不在。因此 作為二十一世紀(jì)的大學(xué)來說掌握計算機(jī)開發(fā)技術(shù)是十分重要的。 回顧起此次課程設(shè)計,至今讓我我們?nèi)愿锌H多,的確,從從拿到題目到完成整個編程,從理論到實(shí)踐,在這一個星期的日子里,可以學(xué)到很多很多的的東西,

18、同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。 這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,最后在盧老師的辛勤指導(dǎo)下,終于游逆而解。同時,在盧老師的身上我學(xué)得到很多實(shí)用的知識,在次我表示感謝!同時,對給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次

溫馨提示

  • 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

提交評論