版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、東南大學(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)目 錄課程設(shè)計(jì)任務(wù)書(功能簡(jiǎn)介、課程設(shè)計(jì)要求)··························
2、83;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é):(編程中遇到的
3、問題及解決方法);.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)告書,具體要求
4、見以下說明。設(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)手輸入。這就是本程序
5、的簡(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
6、.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ì)用到最小二乘法。在研究?jī)蓚€(gè)變量的關(guān)系時(shí),通常會(huì)用到一系列的點(diǎn)坐標(biāo),將
7、這些坐標(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è)常量,就像一元一次方程中的一次方一樣。那么,我們就可以想研究線性回歸方程那樣來研究問題了。所以,就要用到黃金分割法
8、,將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ī)計(jì)算出來;設(shè)計(jì)函數(shù),將管徑的z次方的和計(jì)算出來;c. 儲(chǔ)存數(shù)據(jù):定義數(shù)組A10000,B10000,K10000,分別用來記錄每一個(gè)z
9、值得到的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(m
10、m)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<stdio.h>
11、;-/編譯預(yù)處理#include<math.h>-/因?yàn)槌绦蛏婕暗酱畏降挠?jì)算,所以要用到數(shù)學(xué)函數(shù)#include<stdlib.h>-/涉及到文件夾的使用#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;i<N;i+)SUM+=ani;else if(n=0) /這是計(jì)算管徑的z次方的和for(i=0;i<N;i+)SUM+=pow(a
12、0i,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;i<N;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;i<N;i+)S+=pow(c0i,2*q);return (S);int main()float add(float a21000,int n
13、,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;-/定
14、義文件夾指針fp=fopen(“數(shù)據(jù)輸入.txt”,”r”);-/使文件指針指向數(shù)據(jù)存儲(chǔ)的文件for(i=0;i<2;i+)-/用循環(huán)輸入管徑和單價(jià)for(j=0;j<N;j+)fscanf(fp,"%f",&numij);-/從文件中讀取數(shù)據(jù)fscanf(fp,”n”);Prinft(“您從文件中讀取的數(shù)組如下:n");For(i=0;i<2;i+)-/將讀取的文件向屏幕輸出if(i=0)printf(“管徑(毫米):”);If(i=1)printf(“單價(jià)(元):”);For(j=0;j<N;j+)Printf(“%8.2f”.
15、&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.。01fl
16、oat sum=0;A2=product(num,z);-/計(jì)算管徑z次方與之對(duì)應(yīng)的單價(jià)的乘積的和A3=add(num,0,z);-/計(jì)算在每一個(gè)z值下的管徑的z次方的平均值A(chǔ)4=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;j<N;j+)-/開始計(jì)算在每一個(gè)z值下所得到的方差A(yù)6=Bi*(pow(num0j,z);- /計(jì)算b*Dz的值A(chǔ)7=Ai+A6-num1j; -/計(jì)算C(i)與C的平均值的差積,為
17、方差的計(jì)算做準(zhǔn)備sum+=pow(A7,2);/這里為了提高運(yùn)算速度,就只運(yùn)算平方和,不在計(jì)算接下來的開方了;ki=sum;-/將得到的方差賦給ki; min=k0;-/開始用冒泡法的到最小的ki.也就是最小的方差for(i=0;i<(Max-Min)/10000;i+)if(min>ki)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】鍵
18、退出:");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)于從
19、文件中讀取數(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)為可以。而且在全部定義為doub
20、le型數(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ù)的方法,其就是黃金分割最小二乘法。他可以借助電腦
21、快速的計(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),不同的精度值所得出
22、來的結(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)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)新創(chuàng)業(yè)教育對(duì)學(xué)生綜合能力提升的影響
- 從教育到創(chuàng)業(yè)全面解析家庭財(cái)富增值方法論
- 2025年成都貨運(yùn)從業(yè)資格證試題庫及答案解析
- 體育教育與足球隊(duì)訓(xùn)練計(jì)劃的相互影響
- 2025年恩施駕??荚嚳拓涍\(yùn)從業(yè)資格證考試題庫
- 2025年蘇州駕??荚嚳拓涍\(yùn)從業(yè)資格證考試題庫
- 親子運(yùn)動(dòng)安全教育與提升生活質(zhì)量的探索研究
- 2025年山西貨運(yùn)從業(yè)資格證考試模擬題庫答案
- 以家庭為基礎(chǔ)的營養(yǎng)教育實(shí)踐報(bào)告
- 創(chuàng)新型學(xué)校建筑設(shè)計(jì)中的安全考慮
- 藥物警戒體系主文件(根據(jù)指南撰寫)
- 2022重癥醫(yī)學(xué)科優(yōu)質(zhì)護(hù)理工作計(jì)劃
- 系列壓路機(jī)xmr30s40s操作保養(yǎng)手冊(cè)
- 廣州教科版六年級(jí)英語上冊(cè)M1-6復(fù)習(xí)練習(xí)題(含答案)
- GB/T 24159-2022焊接絕熱氣瓶
- GB/T 22412-2016普通裝飾用鋁塑復(fù)合板
- GB/T 20388-2006紡織品鄰苯二甲酸酯的測(cè)定
- GB/T 18370-2014玻璃纖維無捻粗紗布
- GB 7681-2008鍘草機(jī)安全技術(shù)要求
- 門窗安裝施工組織設(shè)計(jì)方案
- 西師版小學(xué)三年級(jí)上冊(cè)數(shù)學(xué)簡(jiǎn)單的同分母分?jǐn)?shù)加減法課件
評(píng)論
0/150
提交評(píng)論