




已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2014年東南大學(xué) c語言課程設(shè)計報告 xxx xxxxxxx東南大學(xué)c語言課程設(shè)計報告課程名稱:計算機綜合課程設(shè)計 學(xué) 院:土木工程學(xué)院 設(shè)計題目:管網(wǎng)造價設(shè)計分析 級 別:b級 學(xué)生姓名:xxxxxx 學(xué) 號:xxxxxxxxxxxxxxxxx 同組學(xué)生: 指導(dǎo)教師:盧瑞華 2014年9月1號20目 錄課程設(shè)計任務(wù)書(功能簡介、課程設(shè)計要求)3系統(tǒng)設(shè)計(包括總體結(jié)構(gòu)、模塊、功能等,輔以程序設(shè)計組成框圖、流程圖解釋);4模塊設(shè)計(主要模塊功能、源代碼、注釋(如函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調(diào)用關(guān)系描述等);.8調(diào)試及測試:(調(diào)試方法,測試結(jié)果的分析與討論,截屏、正確性分析);.11設(shè)計總結(jié):(編程中遇到的問題及解決方法);.14參考文獻(xiàn).181. c語言課程設(shè)計任務(wù)書學(xué)生選題說明:以所發(fā)課程設(shè)計要求為準(zhǔn),請同學(xué)們仔細(xì)閱讀;本任務(wù)書提供的設(shè)計案例僅供選題參考;也可自選,但難易程度需難度相當(dāng);鼓勵結(jié)合本專業(yè)(土木工程、力學(xué))知識進(jìn)行選題,編制程序解決專業(yè)實際問題。限2人選的題目可由1-2人完成(a級);限1人選的題目只能由1人單獨完成(b級); 設(shè)計總體要求:采用模塊化程序設(shè)計;鼓勵可視化編程;源程序中應(yīng)有足夠的注釋;學(xué)生可自行增加新功能模塊(視情況可另外加分);必須上機調(diào)試通過;注重算法運用,優(yōu)化存儲效率與運算效率;需提交源程序(含有注釋)及相關(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)試及測試:(調(diào)試方法,測試結(jié)果的分析與討論,截屏、正確性分析);設(shè)計總結(jié):(編程中遇到的問題及解決方法);心得體會及致謝;參考文獻(xiàn) 程序功能簡介:本程序是用來計算分析關(guān)于工程造價中管網(wǎng)單位造價的,而這個數(shù)學(xué)模型的方程為。你自己將需要分析的數(shù)據(jù)手動輸入,本程序就可以將這個非線性方程的回歸方程給計算出來,其中關(guān)于z的精度和取值范圍都可以自己動手輸入。這就是本程序的簡要功能介紹。2. 系統(tǒng)要求2.1功能要求:對某地給水管網(wǎng)d=200mm以上的管道進(jìn)行了單位造價的綜合分析計算。造價構(gòu)成包括:(1)管材價格;(2)運輸管理費用;(3)施工費用;(4)挖填溝槽費用;(5)路面修復(fù)費用;(6)消火栓費用;(7)閘門費用;(8)閘門井、支墩等構(gòu)筑物;(9)管配件費用;(10)特殊措施費用。得到管徑與單價如表所示。表2 管徑造價表管徑d(mm)200250300350400450500單價d(元/m)82.90102.10120.69140.78166.15229.08257.21管徑d(mm)600700800900100011001200單價d(元/m)324.17377.87452.46517.40659.19747.94854.47試采用常規(guī)回歸分析,通過c語言編程確定管道造價的數(shù)學(xué)模型參數(shù)。管道造價的數(shù)學(xué)模型: 式中:d管徑(m); c單位造價(元/m); a,b,z系數(shù)。2.2模塊設(shè)計分析2.2.1數(shù)學(xué)模型分析因為這是一個純非線性方程,直接運用研究一般的例如方程的方法是行不通的,那么,在這里,就要引入一種數(shù)學(xué)思想,就是黃金分割與最小二乘法。黃金分割最小二乘法作為一種迭代的方法,可以獲得據(jù)怒的最優(yōu)解,因此可以在這里采用這種方法的。首先介紹一下最小二乘法,因為在后續(xù)的計算中,將會用到最小二乘法。在研究兩個變量的關(guān)系時,通常會用到一系列的點坐標(biāo),將這些坐標(biāo)描繪在坐標(biāo)軸上時,如若發(fā)現(xiàn)這些點是分布在一直線的附近,那么我們可以將之設(shè)為一個一元一次的方程:,其中,均為待定的數(shù)。那么,要想求出這些未知的數(shù),根據(jù)最小二乘法原理可以知道,通過計算實際值和用設(shè)的方程所得到的差的平方和,比較這些和,得到的值最小時所對應(yīng)的值就是要求的參數(shù)。就根據(jù)這種思想,通過運用高等數(shù)學(xué)的知識,可以得到關(guān)于參數(shù)的計算方法:(為參數(shù),為方差)以上這些是研究的一元一次的線性回歸方程,那么,對于題目要求的純非線性方程來說,也是可以采用這種思路的。我們可以假設(shè)z為一個常量,就像一元一次方程中的一次方一樣。那么,我們就可以想研究線性回歸方程那樣來研究問題了。所以,就要用到黃金分割法,將z值分成很多的值,每一個z值,將會對應(yīng)一個方差,最后將算到的很多方差進(jìn)行對比,得到最小的方差對應(yīng)的就求出了z值,對應(yīng)的a,b值就可以得到了。同樣的道理,在每一個z值下得到的a,b值:;因此根據(jù)這個思路,就可以將程序的思路設(shè)計出來:a. 輸入信息:將要計算的管徑和對應(yīng)的單價輸入文本文件中,自己宏定義要輸入的數(shù)據(jù)有多少組,然后輸入關(guān)于z的取值范圍和精度;b. 數(shù)據(jù)計算:設(shè)計函數(shù),將單價的和與管徑z次方的和分別計算出來;設(shè)計函數(shù),將管徑的z次方與之對應(yīng)的單價的成績計算出來;設(shè)計函數(shù),將管徑的z次方的和計算出來;c. 儲存數(shù)據(jù):定義數(shù)組a10000,b10000,k10000,分別用來記錄每一個z值得到的a,b,和方差;d. 比較數(shù)據(jù):將得到的數(shù)組k10000用冒泡法得到最小的值,并且用一個中間變量記錄下來數(shù)組中最小的值;e. 輸出結(jié)果:將得到的最佳擬合曲線輸出。f. 開始循環(huán):系統(tǒng)會給出是否還要繼續(xù)的提示,這樣只需組建一次,就可以計算很多次,可以用于比較不同精度時的函數(shù)曲線了。2.2.2模塊設(shè)計分析 系統(tǒng)功能模塊圖退出程序主菜單計算輸入數(shù)據(jù)輸出結(jié)果 排序mabi 2.2.3程序工作分析1) 將待輸入的數(shù)按表輸入文本文件中:管徑d(mm)200250300350400450500單價d(元/m)82.90102.10120.69140.78166.15229.08257.21管徑d(mm)600700800900100011001200單價d(元/m)324.17377.87452.46517.40659.19747.94854.472) 數(shù)據(jù)求和:根據(jù)各個函數(shù)將待要計算的數(shù)據(jù)計算出來;3) 計算公式:根據(jù)黃金分割最小二乘法的公式將每一個z值要求得的a,b計算出來;4) 記錄功能:將每一個z值所對應(yīng)的a,b,及方差都記錄在已知的數(shù)組中;排序功能:對得到的方差數(shù)組進(jìn)行冒泡法排序,就會選出該數(shù)組中的最小值,從而得到對應(yīng)的a,b值;輸出功能:將得到的最佳擬合曲線輸出;循環(huán)功能:再次將z的精度改變,比較不同精度時的數(shù)據(jù)差別。3. 模塊設(shè)計#include-/編譯預(yù)處理#include-/因為程序涉及到次方的計算,所以要用到數(shù)學(xué)函數(shù)#include-/涉及到文件夾的使用#define n 5- -/宏定義數(shù)據(jù)的組數(shù),這樣方便以后的計算float add(float a21000,int n,float m) -/計算單價的和與管徑的z次方的和的平均值的函數(shù)float sum=0;int i;if(n=1)-/這是計算單價的和for(i=0;in;i+)sum+=ani;else if(n=0) /這是計算管徑的z次方的和for(i=0;in;i+)sum+=pow(a0i,m);return (sum/n);float product(float b21000,float p)-/計算管徑z次方與之對應(yīng)的單價的乘積的和的函數(shù)float su=0;int i;for(i=0;in;i+)su+=(pow(b0i,p)*b1i);return (su);float guanjing(float c21000,float q)-/計算管徑的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表示在每一個z值所得到的方差int i,j,n=0;float a1,a2,a3,a4,a5,a6,a7,z;-/這些數(shù)是計算過程的中間值,方便觀看float min,sum;-/定義min用來比較方差時的中間變量。sum是為了計算方差時用到的ifloat min,max;-/關(guān)于z的取值范圍定義file *fp;-/定義文件夾指針 fp=fopen(“數(shù)據(jù)輸入.txt”,”r”);-/使文件指針指向數(shù)據(jù)存儲的文件for(i=0;i2;i+)-/用循環(huán)輸入管徑和單價 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(“單價(元):”);for(j=0;jn;j+)printf(“%8.2f”.&numij);printf(“n”); printf(請輸入關(guān)于z的取值范圍(用minmax來表示):);scanf(%f%f,&min,&max);-/從鍵盤中得到z值得范圍a1=add(num,1,0);-/求出單價的平均值 while(n=0)-/開始循環(huán),用n來做nt r=0;-/在用冒泡法比較時,用來記錄方差最小時的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);-/計算管徑z次方與之對應(yīng)的單價的乘積的和a3=add(num,0,z);-/計算在每一個z值下的管徑的z次方的平均值a4=guanjing(num,z);-/計算在每一個 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+)-/開始計算在每一個z值下所得到的方差a6=bi*(pow(num0j,z);- /計算b*dz的值a7=ai+a6-num1j; -/計算c(i)與c的平均值的差積,為方差的計算做準(zhǔn)備sum+=pow(a7,2);/這里為了提高運算速度,就只運算平方和,不在計算接下來的開方了;ki=sum;-/將得到的方差賦給ki; min=k0;-/開始用冒泡法的到最小的ki.也就是最小的方差for(i=0;iki)min=ki;r=i;-/這里用r來記錄下最小的方差是哪個,從而找到最小的方差printf(您得到的最佳擬合曲線為:c=%f+%f*d%f。n,ar,br,min+0.01*r);-/輸出的到的擬合的曲線printf(如果繼續(xù)輸入,請按【0】鍵;否者按【1】鍵退出:);scanf(%d,&n);-/循環(huán)結(jié)束return 0;4.調(diào)試及測試1 信息存儲:2 開始界面:3 輸入信息4 開始循環(huán):5 程序結(jié)束5.調(diào)試中的問題:1.關(guān)于記錄系數(shù)sum的問題:在本程序的比較模塊中,有一個記錄方差的中間量sum,在初始程序中,它的定義如下:也就是說,未對sum的初始值賦值,結(jié)果在運行程序的時候,系統(tǒng)就一直提示無法從內(nèi)存中讀取數(shù)據(jù)。后來經(jīng)過檢查以后,才發(fā)現(xiàn)原來是sum這里出現(xiàn)了問題。因為如果他沒有初始化的話,那么系統(tǒng)會給它賦一個隨機的值,它就會影響整個的程序運行。后來將其賦值為0以后,那么問題就得到解決了。2. 關(guān)于從文件中讀取數(shù)據(jù)的錯誤:一開始,程序建立的結(jié)構(gòu)體數(shù)組,其設(shè)置如下:結(jié)果,用了文件指針后,就無法實現(xiàn)從文件中既讀取字符串,又讀取了數(shù)組。雖然通過在網(wǎng)上查找資料,可以做到這一點,但是其運用的是c+,不符合我們的要求。所以就將此結(jié)構(gòu)體去掉了,而是直接定義了一個數(shù)組,在輸出數(shù)組的時候,就將“管徑”和“單價”直接輸出,然后再輸出這樣,就回避了難以解決的問題,也充分運用了自己的知識。3. 在程序中的警告:這是在程序中出現(xiàn)的警告,程序顯示在定義數(shù)據(jù)類型時,double和float型之間的轉(zhuǎn)換存在數(shù)據(jù)可能丟失的警告,經(jīng)過在同學(xué)的幫助下,我才明白對于本題而言,數(shù)據(jù)不會溢出,因此暫認(rèn)為可以。而且在全部定義為double型數(shù)據(jù)時易出現(xiàn)一些問題。所以個人在設(shè)計程序時將部分不會存在數(shù)據(jù)溢出的變量定義為float型。6.設(shè)計總結(jié)當(dāng)初一看到這個題是首先想到的是平常學(xué)習(xí)中較為常用的一般線性回歸方程,但經(jīng)過仔細(xì)研究題目,才發(fā)現(xiàn)其存在一個次方系數(shù),導(dǎo)致了這個問題的復(fù)雜化。所以就開始查找一些關(guān)于此方面的書籍。在一本關(guān)于數(shù)據(jù)統(tǒng)計的書上邊,我知道了這是屬于一個純非線性的回歸方程,也就是說它不可以化成一般的回歸方程上邊。雖然可以用數(shù)學(xué)的方法將它計算出來,但是要用到積分的知識,由于種種限制,故無法實現(xiàn)用直接得到結(jié)果。后來,又在關(guān)于管網(wǎng)造價的相關(guān)書籍中,查到了如何用程序來計算這種函數(shù)的方法,其就是黃金分割最小二乘法。他可以借助電腦快速的計算能力,很方便的找到最佳擬合的曲線。后來也經(jīng)過了老師的認(rèn)可,說這種方法是正確的。 編寫成程序時,為了黃金分割最小二乘法的公式的計算方便定義了3個函數(shù),求取一些在黃金分割最小二乘法的公式中需要用到的值。 此外,本程序還是設(shè)定了一些其他的功能,例如可以自己定義z的范圍和精度,并且解決了從文件中讀取數(shù)據(jù)的問題,大大的提高了工作效率。還有值得提的一點就是可以一直使用不同的精度,來得到不同的結(jié)果,完全可以滿足使用者的要求,可以比較不同精度時的差別,得到自己滿意的答案。在這里,我題外說一下,為什么要設(shè)計循環(huán)結(jié)構(gòu)呢?其實一開始程序只能計算一個精度,后來,我自己在運行這個程序時發(fā)現(xiàn),不同的精度值所得出來的結(jié)果有時候會有很大的差別,我就想,這應(yīng)該是計算過程中數(shù)據(jù)的丟失所造成的吧。那么,為了給使用者提供一個完全自主的模式,我就開始引入這個循環(huán)功能,就對一組數(shù)據(jù)的到很多個不同的曲線,到時候,使用者就會選擇自己說要用到的結(jié)果。不過,本程序比較遺憾的地方就是無法將得到的最佳擬合曲線儲存在文件中以供使用者以后的讀取。不是不會這么將數(shù)據(jù)讀到文件中,而是不知道怎么將既有字符串,又有數(shù)據(jù)的一串文字讀到文件中,這也是被本程序最為遺憾的地方,希望看到本程序的人,可以幫助我修改或者提出寶貴的意見,本人在這里將不勝感激。7.心得體會及致謝 課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,當(dāng)今計算機應(yīng)用在生活中可以說得
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)學(xué)影像學(xué)題庫
- 餐飲租賃協(xié)議一定要注意4點
- 2025酒店工作總結(jié)(33篇)
- 2025河北張家口市懷來經(jīng)開創(chuàng)新實業(yè)有限公司招聘工作人員2人筆試參考題庫附帶答案詳解
- 2025新疆新星天元農(nóng)牧業(yè)發(fā)展集團有限公司第一次招聘工作人員招聘7人筆試參考題庫附帶答案詳解
- 2025年安徽江淮汽車集團股份有限公司招聘5人筆試參考題庫附帶答案詳解
- 2025山東濟南平陰縣魯中山河科技發(fā)展有限公司招聘4人筆試參考題庫附帶答案詳解
- 2025國網(wǎng)吉林省電力有限公司高校畢業(yè)生招聘約134人(第二批)筆試參考題庫附帶答案詳解
- 公共衛(wèi)生與防疫課件
- 《寶石鑒賞新視角》課件
- 陜西省多校聯(lián)考2024-2025學(xué)年高一下學(xué)期4月期中地理試題(原卷版+解析版)
- 人工智能應(yīng)用基礎(chǔ) 課件 第六章 大語言模型
- 上海2025屆高考模擬數(shù)學(xué)試卷02(解析版)
- 邊坡工程考試試題及答案
- 施工流水作業(yè)段的劃分與組織畢業(yè)設(shè)計
- 跨文化團隊協(xié)作研究-第1篇-全面剖析
- 2024年中國光大銀行深圳分行招聘考試真題
- 鼻咽惡性腫瘤的護理查房
- 綠化工程安全教育培訓(xùn)
- 浙江省杭州市2025屆高三下學(xué)期4月二模試題 語文“科技渠道”的雙重性作文分析
- 漂流免責(zé)協(xié)議書范本
評論
0/150
提交評論