




已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2014年東南大學(xué) c語言課程設(shè)計(jì)報(bào)告 xxx xxxxxxx東南大學(xué)c語言課程設(shè)計(jì)報(bào)告課程名稱:計(jì)算機(jī)綜合課程設(shè)計(jì) 學(xué) 院:土木工程學(xué)院 設(shè)計(jì)題目:管網(wǎng)造價(jià)設(shè)計(jì)分析 級(jí) 別:b級(jí) 學(xué)生姓名:xxxxxx 學(xué) 號(hào):xxxxxxxxxxxxxxxxx 同組學(xué)生: 指導(dǎo)教師:盧瑞華 2014年9月1號(hào)20目 錄課程設(shè)計(jì)任務(wù)書(功能簡(jiǎn)介、課程設(shè)計(jì)要求)3系統(tǒng)設(shè)計(jì)(包括總體結(jié)構(gòu)、模塊、功能等,輔以程序設(shè)計(jì)組成框圖、流程圖解釋);4模塊設(shè)計(jì)(主要模塊功能、源代碼、注釋(如函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調(diào)用關(guān)系描述等);.8調(diào)試及測(cè)試:(調(diào)試方法,測(cè)試結(jié)果的分析與討論,截屏、正確性分析);.11設(shè)計(jì)總結(jié):(編程中遇到的問題及解決方法);.14參考文獻(xiàn).181. c語言課程設(shè)計(jì)任務(wù)書學(xué)生選題說明:以所發(fā)課程設(shè)計(jì)要求為準(zhǔn),請(qǐng)同學(xué)們仔細(xì)閱讀;本任務(wù)書提供的設(shè)計(jì)案例僅供選題參考;也可自選,但難易程度需難度相當(dāng);鼓勵(lì)結(jié)合本專業(yè)(土木工程、力學(xué))知識(shí)進(jìn)行選題,編制程序解決專業(yè)實(shí)際問題。限2人選的題目可由1-2人完成(a級(jí));限1人選的題目只能由1人單獨(dú)完成(b級(jí)); 設(shè)計(jì)總體要求:采用模塊化程序設(shè)計(jì);鼓勵(lì)可視化編程;源程序中應(yīng)有足夠的注釋;學(xué)生可自行增加新功能模塊(視情況可另外加分);必須上機(jī)調(diào)試通過;注重算法運(yùn)用,優(yōu)化存儲(chǔ)效率與運(yùn)算效率;需提交源程序(含有注釋)及相關(guān)文件(數(shù)據(jù)或數(shù)據(jù)庫文件);提交設(shè)計(jì)報(bào)告書,具體要求見以下說明。設(shè)計(jì)報(bào)告格式:目 錄課程設(shè)計(jì)任務(wù)書(功能簡(jiǎn)介、課程設(shè)計(jì)要求);系統(tǒng)設(shè)計(jì)(包括總體結(jié)構(gòu)、模塊、功能等,輔以程序設(shè)計(jì)組成框圖、流程圖解釋);模塊設(shè)計(jì)(主要模塊功能、源代碼、注釋(如函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調(diào)用關(guān)系描述等);調(diào)試及測(cè)試:(調(diào)試方法,測(cè)試結(jié)果的分析與討論,截屏、正確性分析);設(shè)計(jì)總結(jié):(編程中遇到的問題及解決方法);心得體會(huì)及致謝;參考文獻(xiàn) 程序功能簡(jiǎn)介:本程序是用來計(jì)算分析關(guān)于工程造價(jià)中管網(wǎng)單位造價(jià)的,而這個(gè)數(shù)學(xué)模型的方程為。你自己將需要分析的數(shù)據(jù)手動(dòng)輸入,本程序就可以將這個(gè)非線性方程的回歸方程給計(jì)算出來,其中關(guān)于z的精度和取值范圍都可以自己動(dòng)手輸入。這就是本程序的簡(jiǎn)要功能介紹。2. 系統(tǒng)要求2.1功能要求:對(duì)某地給水管網(wǎng)d=200mm以上的管道進(jìn)行了單位造價(jià)的綜合分析計(jì)算。造價(jià)構(gòu)成包括:(1)管材價(jià)格;(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)用。得到管徑與單價(jià)如表所示。表2 管徑造價(jià)表管徑d(mm)200250300350400450500單價(jià)d(元/m)82.90102.10120.69140.78166.15229.08257.21管徑d(mm)600700800900100011001200單價(jià)d(元/m)324.17377.87452.46517.40659.19747.94854.47試采用常規(guī)回歸分析,通過c語言編程確定管道造價(jià)的數(shù)學(xué)模型參數(shù)。管道造價(jià)的數(shù)學(xué)模型: 式中:d管徑(m); c單位造價(jià)(元/m); a,b,z系數(shù)。2.2模塊設(shè)計(jì)分析2.2.1數(shù)學(xué)模型分析因?yàn)檫@是一個(gè)純非線性方程,直接運(yùn)用研究一般的例如方程的方法是行不通的,那么,在這里,就要引入一種數(shù)學(xué)思想,就是黃金分割與最小二乘法。黃金分割最小二乘法作為一種迭代的方法,可以獲得據(jù)怒的最優(yōu)解,因此可以在這里采用這種方法的。首先介紹一下最小二乘法,因?yàn)樵诤罄m(xù)的計(jì)算中,將會(huì)用到最小二乘法。在研究兩個(gè)變量的關(guān)系時(shí),通常會(huì)用到一系列的點(diǎn)坐標(biāo),將這些坐標(biāo)描繪在坐標(biāo)軸上時(shí),如若發(fā)現(xiàn)這些點(diǎn)是分布在一直線的附近,那么我們可以將之設(shè)為一個(gè)一元一次的方程:,其中,均為待定的數(shù)。那么,要想求出這些未知的數(shù),根據(jù)最小二乘法原理可以知道,通過計(jì)算實(shí)際值和用設(shè)的方程所得到的差的平方和,比較這些和,得到的值最小時(shí)所對(duì)應(yīng)的值就是要求的參數(shù)。就根據(jù)這種思想,通過運(yùn)用高等數(shù)學(xué)的知識(shí),可以得到關(guān)于參數(shù)的計(jì)算方法:(為參數(shù),為方差)以上這些是研究的一元一次的線性回歸方程,那么,對(duì)于題目要求的純非線性方程來說,也是可以采用這種思路的。我們可以假設(shè)z為一個(gè)常量,就像一元一次方程中的一次方一樣。那么,我們就可以想研究線性回歸方程那樣來研究問題了。所以,就要用到黃金分割法,將z值分成很多的值,每一個(gè)z值,將會(huì)對(duì)應(yīng)一個(gè)方差,最后將算到的很多方差進(jìn)行對(duì)比,得到最小的方差對(duì)應(yīng)的就求出了z值,對(duì)應(yīng)的a,b值就可以得到了。同樣的道理,在每一個(gè)z值下得到的a,b值:;因此根據(jù)這個(gè)思路,就可以將程序的思路設(shè)計(jì)出來:a. 輸入信息:將要計(jì)算的管徑和對(duì)應(yīng)的單價(jià)輸入文本文件中,自己宏定義要輸入的數(shù)據(jù)有多少組,然后輸入關(guān)于z的取值范圍和精度;b. 數(shù)據(jù)計(jì)算:設(shè)計(jì)函數(shù),將單價(jià)的和與管徑z次方的和分別計(jì)算出來;設(shè)計(jì)函數(shù),將管徑的z次方與之對(duì)應(yīng)的單價(jià)的成績計(jì)算出來;設(shè)計(jì)函數(shù),將管徑的z次方的和計(jì)算出來;c. 儲(chǔ)存數(shù)據(jù):定義數(shù)組a10000,b10000,k10000,分別用來記錄每一個(gè)z值得到的a,b,和方差;d. 比較數(shù)據(jù):將得到的數(shù)組k10000用冒泡法得到最小的值,并且用一個(gè)中間變量記錄下來數(shù)組中最小的值;e. 輸出結(jié)果:將得到的最佳擬合曲線輸出。f. 開始循環(huán):系統(tǒng)會(huì)給出是否還要繼續(xù)的提示,這樣只需組建一次,就可以計(jì)算很多次,可以用于比較不同精度時(shí)的函數(shù)曲線了。2.2.2模塊設(shè)計(jì)分析 系統(tǒng)功能模塊圖退出程序主菜單計(jì)算輸入數(shù)據(jù)輸出結(jié)果 排序mabi 2.2.3程序工作分析1) 將待輸入的數(shù)按表輸入文本文件中:管徑d(mm)200250300350400450500單價(jià)d(元/m)82.90102.10120.69140.78166.15229.08257.21管徑d(mm)600700800900100011001200單價(jià)d(元/m)324.17377.87452.46517.40659.19747.94854.472) 數(shù)據(jù)求和:根據(jù)各個(gè)函數(shù)將待要計(jì)算的數(shù)據(jù)計(jì)算出來;3) 計(jì)算公式:根據(jù)黃金分割最小二乘法的公式將每一個(gè)z值要求得的a,b計(jì)算出來;4) 記錄功能:將每一個(gè)z值所對(duì)應(yīng)的a,b,及方差都記錄在已知的數(shù)組中;排序功能:對(duì)得到的方差數(shù)組進(jìn)行冒泡法排序,就會(huì)選出該數(shù)組中的最小值,從而得到對(duì)應(yīng)的a,b值;輸出功能:將得到的最佳擬合曲線輸出;循環(huán)功能:再次將z的精度改變,比較不同精度時(shí)的數(shù)據(jù)差別。3. 模塊設(shè)計(jì)#include-/編譯預(yù)處理#include-/因?yàn)槌绦蛏婕暗酱畏降挠?jì)算,所以要用到數(shù)學(xué)函數(shù)#include-/涉及到文件夾的使用#define n 5- -/宏定義數(shù)據(jù)的組數(shù),這樣方便以后的計(jì)算float add(float a21000,int n,float m) -/計(jì)算單價(jià)的和與管徑的z次方的和的平均值的函數(shù)float sum=0;int i;if(n=1)-/這是計(jì)算單價(jià)的和for(i=0;in;i+)sum+=ani;else if(n=0) /這是計(jì)算管徑的z次方的和for(i=0;in;i+)sum+=pow(a0i,m);return (sum/n);float product(float b21000,float p)-/計(jì)算管徑z次方與之對(duì)應(yīng)的單價(jià)的乘積的和的函數(shù)float su=0;int i;for(i=0;in;i+)su+=(pow(b0i,p)*b1i);return (su);float guanjing(float c21000,float q)-/計(jì)算管徑的2z次方的和的函數(shù) float s=0;int i;for(i=0;in;i+)s+=pow(c0i,2*q);return (s);int main()float add(float a21000,int n,float m);float product(float b21000,float p);float guanjing(float c21000,float q);float num21000;float a10000,b10000,k10000;/定義關(guān)于a和b的數(shù)組,ki表示在每一個(gè)z值所得到的方差int i,j,n=0;float a1,a2,a3,a4,a5,a6,a7,z;-/這些數(shù)是計(jì)算過程的中間值,方便觀看float min,sum;-/定義min用來比較方差時(shí)的中間變量。sum是為了計(jì)算方差時(shí)用到的ifloat min,max;-/關(guān)于z的取值范圍定義file *fp;-/定義文件夾指針 fp=fopen(“數(shù)據(jù)輸入.txt”,”r”);-/使文件指針指向數(shù)據(jù)存儲(chǔ)的文件for(i=0;i2;i+)-/用循環(huán)輸入管徑和單價(jià) for(j=0;jn;j+)fscanf(fp,%f,&numij);-/從文件中讀取數(shù)據(jù)fscanf(fp,”n”);prinft(“您從文件中讀取的數(shù)組如下:n);for(i=0;i2;i+)-/將讀取的文件向屏幕輸出if(i=0)printf(“管徑(毫米):”);if(i=1)printf(“單價(jià)(元):”);for(j=0;jn;j+)printf(“%8.2f”.&numij);printf(“n”); printf(請(qǐng)輸入關(guān)于z的取值范圍(用minmax來表示):);scanf(%f%f,&min,&max);-/從鍵盤中得到z值得范圍a1=add(num,1,0);-/求出單價(jià)的平均值 while(n=0)-/開始循環(huán),用n來做nt r=0;-/在用冒泡法比較時(shí),用來記錄方差最小時(shí)的i值scanf(%f%f,&min,&max);for(z=min,i=0;z=max;z+=0.01,i+)-/開始循環(huán),每次z值是增加0.。01float sum=0;a2=product(num,z);-/計(jì)算管徑z次方與之對(duì)應(yīng)的單價(jià)的乘積的和a3=add(num,0,z);-/計(jì)算在每一個(gè)z值下的管徑的z次方的平均值a4=guanjing(num,z);-/計(jì)算在每一個(gè) z值下的管徑的2*z次方的和a5=n*pow(a3,2); bi=(a2-n*a3*a1)/(a4-a5);-/得到管徑前面的系數(shù)ai=a1-a3*bi;-/得到常量for(j=0;jn;j+)-/開始計(jì)算在每一個(gè)z值下所得到的方差a6=bi*(pow(num0j,z);- /計(jì)算b*dz的值a7=ai+a6-num1j; -/計(jì)算c(i)與c的平均值的差積,為方差的計(jì)算做準(zhǔn)備sum+=pow(a7,2);/這里為了提高運(yùn)算速度,就只運(yùn)算平方和,不在計(jì)算接下來的開方了;ki=sum;-/將得到的方差賦給ki; min=k0;-/開始用冒泡法的到最小的ki.也就是最小的方差for(i=0;iki)min=ki;r=i;-/這里用r來記錄下最小的方差是哪個(gè),從而找到最小的方差printf(您得到的最佳擬合曲線為:c=%f+%f*d%f。n,ar,br,min+0.01*r);-/輸出的到的擬合的曲線printf(如果繼續(xù)輸入,請(qǐng)按【0】鍵;否者按【1】鍵退出:);scanf(%d,&n);-/循環(huán)結(jié)束return 0;4.調(diào)試及測(cè)試1 信息存儲(chǔ):2 開始界面:3 輸入信息4 開始循環(huán):5 程序結(jié)束5.調(diào)試中的問題:1.關(guān)于記錄系數(shù)sum的問題:在本程序的比較模塊中,有一個(gè)記錄方差的中間量sum,在初始程序中,它的定義如下:也就是說,未對(duì)sum的初始值賦值,結(jié)果在運(yùn)行程序的時(shí)候,系統(tǒng)就一直提示無法從內(nèi)存中讀取數(shù)據(jù)。后來經(jīng)過檢查以后,才發(fā)現(xiàn)原來是sum這里出現(xiàn)了問題。因?yàn)槿绻麤]有初始化的話,那么系統(tǒng)會(huì)給它賦一個(gè)隨機(jī)的值,它就會(huì)影響整個(gè)的程序運(yùn)行。后來將其賦值為0以后,那么問題就得到解決了。2. 關(guān)于從文件中讀取數(shù)據(jù)的錯(cuò)誤:一開始,程序建立的結(jié)構(gòu)體數(shù)組,其設(shè)置如下:結(jié)果,用了文件指針后,就無法實(shí)現(xiàn)從文件中既讀取字符串,又讀取了數(shù)組。雖然通過在網(wǎng)上查找資料,可以做到這一點(diǎn),但是其運(yùn)用的是c+,不符合我們的要求。所以就將此結(jié)構(gòu)體去掉了,而是直接定義了一個(gè)數(shù)組,在輸出數(shù)組的時(shí)候,就將“管徑”和“單價(jià)”直接輸出,然后再輸出這樣,就回避了難以解決的問題,也充分運(yùn)用了自己的知識(shí)。3. 在程序中的警告:這是在程序中出現(xiàn)的警告,程序顯示在定義數(shù)據(jù)類型時(shí),double和float型之間的轉(zhuǎn)換存在數(shù)據(jù)可能丟失的警告,經(jīng)過在同學(xué)的幫助下,我才明白對(duì)于本題而言,數(shù)據(jù)不會(huì)溢出,因此暫認(rèn)為可以。而且在全部定義為double型數(shù)據(jù)時(shí)易出現(xiàn)一些問題。所以個(gè)人在設(shè)計(jì)程序時(shí)將部分不會(huì)存在數(shù)據(jù)溢出的變量定義為float型。6.設(shè)計(jì)總結(jié)當(dāng)初一看到這個(gè)題是首先想到的是平常學(xué)習(xí)中較為常用的一般線性回歸方程,但經(jīng)過仔細(xì)研究題目,才發(fā)現(xiàn)其存在一個(gè)次方系數(shù),導(dǎo)致了這個(gè)問題的復(fù)雜化。所以就開始查找一些關(guān)于此方面的書籍。在一本關(guān)于數(shù)據(jù)統(tǒng)計(jì)的書上邊,我知道了這是屬于一個(gè)純非線性的回歸方程,也就是說它不可以化成一般的回歸方程上邊。雖然可以用數(shù)學(xué)的方法將它計(jì)算出來,但是要用到積分的知識(shí),由于種種限制,故無法實(shí)現(xiàn)用直接得到結(jié)果。后來,又在關(guān)于管網(wǎng)造價(jià)的相關(guān)書籍中,查到了如何用程序來計(jì)算這種函數(shù)的方法,其就是黃金分割最小二乘法。他可以借助電腦快速的計(jì)算能力,很方便的找到最佳擬合的曲線。后來也經(jīng)過了老師的認(rèn)可,說這種方法是正確的。 編寫成程序時(shí),為了黃金分割最小二乘法的公式的計(jì)算方便定義了3個(gè)函數(shù),求取一些在黃金分割最小二乘法的公式中需要用到的值。 此外,本程序還是設(shè)定了一些其他的功能,例如可以自己定義z的范圍和精度,并且解決了從文件中讀取數(shù)據(jù)的問題,大大的提高了工作效率。還有值得提的一點(diǎn)就是可以一直使用不同的精度,來得到不同的結(jié)果,完全可以滿足使用者的要求,可以比較不同精度時(shí)的差別,得到自己滿意的答案。在這里,我題外說一下,為什么要設(shè)計(jì)循環(huán)結(jié)構(gòu)呢?其實(shí)一開始程序只能計(jì)算一個(gè)精度,后來,我自己在運(yùn)行這個(gè)程序時(shí)發(fā)現(xiàn),不同的精度值所得出來的結(jié)果有時(shí)候會(huì)有很大的差別,我就想,這應(yīng)該是計(jì)算過程中數(shù)據(jù)的丟失所造成的吧。那么,為了給使用者提供一個(gè)完全自主的模式,我就開始引入這個(gè)循環(huán)功能,就對(duì)一組數(shù)據(jù)的到很多個(gè)不同的曲線,到時(shí)候,使用者就會(huì)選擇自己說要用到的結(jié)果。不過,本程序比較遺憾的地方就是無法將得到的最佳擬合曲線儲(chǔ)存在文件中以供使用者以后的讀取。不是不會(huì)這么將數(shù)據(jù)讀到文件中,而是不知道怎么將既有字符串,又有數(shù)據(jù)的一串文字讀到文件中,這也是被本程序最為遺憾的地方,希望看到本程序的人,可以幫助我修改或者提出寶貴的意見,本人在這里將不勝感激。7.心得體會(huì)及致謝 課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,當(dāng)今計(jì)算機(jī)應(yīng)用在生活中可以說得
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力行業(yè)員工薪酬福利合同
- 勞動(dòng)合同 月度范文
- 大型商業(yè)綜合體裝修合同
- 建筑工地安全施工合同書
- 廢舊物資循環(huán)利用合同項(xiàng)目2025
- 生產(chǎn)制造合同合作書
- 商品房購回合同條款
- 房地產(chǎn)租賃管理合同范本
- 訂單班人才培養(yǎng)協(xié)議(范本)
- 無機(jī)鹽產(chǎn)品在農(nóng)業(yè)領(lǐng)域的應(yīng)用考核試卷
- GB 8537-2018食品安全國家標(biāo)準(zhǔn)飲用天然礦泉水
- GB 31247-2014電纜及光纜燃燒性能分級(jí)
- 主要農(nóng)作物(糧食作物)課件
- 部編人教版道德與法治五年級(jí)下冊(cè)全冊(cè)課時(shí)練習(xí)講解課件
- 廉政鑒定書(院內(nèi)廉政意見書)
- 《潘姓源于固始,是不爭(zhēng)的史實(shí)》的考辨
- 園林景觀工程細(xì)節(jié)
- 焊接技師培訓(xùn)教材(釬焊)課件
- 2022年中級(jí)注冊(cè)安全工程師(安全生產(chǎn)法及相關(guān)法律知識(shí))考試題庫???00題及答案下載(四川省專用)
- 《未成年人保護(hù)法》課件
- 原發(fā)性肝癌經(jīng)皮肝動(dòng)脈化療栓塞術(shù)(TACE)臨床路徑
評(píng)論
0/150
提交評(píng)論