數(shù)值分析水塔問題_第1頁
數(shù)值分析水塔問題_第2頁
數(shù)值分析水塔問題_第3頁
數(shù)值分析水塔問題_第4頁
數(shù)值分析水塔問題_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、淮海工學(xué)院計算機工程學(xué)院實驗報告書課程名: 數(shù)值分析 題 目: 水塔問題 班 級: 學(xué) 號: 姓 名: 評語:成績: 指導(dǎo)教師: 批閱時間: 年 月 日一、課程設(shè)計目的:1訓(xùn)練學(xué)生靈活應(yīng)用所學(xué)數(shù)值分析知識,獨立完成問題分析,結(jié)合數(shù)值分析理論知識,編寫程序求解指定問題。 2初步掌握解決實際問題過程中的對問題的分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;3提高綜合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力;4.訓(xùn)練用數(shù)值分析的思想方法和編程應(yīng)用技能模擬解決實際問題,鞏固、深化學(xué)生的理論知識,提高學(xué)生對數(shù)值分析的認知水平和編程水平,并在此過程中培養(yǎng)他們嚴謹?shù)目茖W(xué)態(tài)度和良好的工作作風二、課程

2、設(shè)計任務(wù)與要求:課程設(shè)計題目:計算水塔的水流量【問題描述】 某居民區(qū)的民用自來水是由一個圓柱形的水塔提供,水塔高12.2米,直徑17.4米。水塔是由水泵根據(jù)水塔內(nèi)水位高低自動加水,一般每天水泵工作兩次,現(xiàn)在需要了解該居民區(qū)用水規(guī)律與水泵的工作功率。按照設(shè)計,當水塔的水位降至最低水位,約8.2米時,水泵自動啟動加水;當水位升高到一個最高水位,約10.8米時,水泵停止工作。可以考慮采用用水率(單位時間的用水量)來反映用水規(guī)律,并通過間隔一段時間測量水塔里的水位來估算用水率,原始數(shù)據(jù)表是某一天的測量記錄數(shù)據(jù),測量了28個時刻,但是由于其中有3個時刻遇到水泵正在向水塔供水,而無水位記錄。試建立合適的數(shù)

3、學(xué)模型,推算任意時刻的用水率、一天的總用水量。進一步:可自己增加一些新的計算功能。 【問題假設(shè)】 1. 水塔中水流量是時間的連續(xù)光滑函數(shù),與水泵工作與否無關(guān),并忽略水位高度對水流速度的影響。2. 水泵工作與否完全取決于水塔內(nèi)水位的高度。3. 水塔為標準的圓柱體。體積V=PI*D*D*h/4 其中D為底面直徑,h為水位高。4. 水泵第一次供水時間段為8.967,10.954,第二次供水時間段為20.839,22.958。 【實驗數(shù)據(jù)】 原始數(shù)據(jù)(單位:時刻(小時),水塔中水位(米)時刻t00.9211.8432.9493.8714.9785.900水位h9.6779.4799.3089.1258

4、.9828.8148.686時刻t7.0067.9288.9679.981110.92510.95412.032水位h8.5258.3888.220泵水泵水10.82010.500時刻t12.95413.87514.98215.90316.82617.93119.037水位h10.2109.9369.6539.4099.1808.9218.662時刻t19.95920.83922.01522.95823.88024.98625.908水位h8.4338.220泵水10.82010.59110.35410.180【實現(xiàn)提示】 由問題的要求,關(guān)鍵在于確定用水率函數(shù),即單位時間內(nèi)用水體積,記為f(t

5、),又稱水流速度。如果能夠通過測量數(shù)據(jù),產(chǎn)生若干個時刻的用水率,也就是f(t)在若干個點的函數(shù)值,則f(t)的計算問題就可以轉(zhuǎn)化為插值或擬合問題?!緦崿F(xiàn)要求】1、在處理每個題目時,要求分別從數(shù)據(jù)處理階段和程序設(shè)計階段兩個主要階段實現(xiàn)課程設(shè)計,詳細的通過文字以及插圖等形式,按需求分析、數(shù)據(jù)處理、算法設(shè)計、代碼、計算結(jié)果和程序執(zhí)行的截圖等若干步驟完成題目,最終寫出完整的分析報告。前期準備工作完備與否直接影響到后序上機調(diào)試工作的效率。在程序設(shè)計階段應(yīng)盡量利用已有的標準函數(shù),加大代碼的重用率。 2、設(shè)計的題目要求達到一定工作量,并具有一定的深度和難度。3、程序設(shè)計語言推薦使用C/C+,程序書寫規(guī)范,源

6、程序需加必要的注釋;4、每位同學(xué)需提交可獨立運行的程序;5、每位同學(xué)需獨立提交設(shè)計報告書(每人一份),要求編排格式統(tǒng)一、規(guī)范、內(nèi)容充實;6、課程設(shè)計實踐作為培養(yǎng)學(xué)生動手能力的一種手段,單獨考核。三、課程設(shè)計說明書【需求分析】根據(jù)一組關(guān)于若干個時刻的水塔內(nèi)水位高度的數(shù)據(jù),經(jīng)過必要的處理,得到一組若干個時刻的用水率的數(shù)據(jù),然后根據(jù)這一組數(shù)據(jù)提出假設(shè),建立合適的數(shù)學(xué)模型,通過C語言程序?qū)⒃撃P偷囊恍﹨?shù)求出來,最后得到一條能夠擬合這一組若干個時刻的用水率的光滑的函數(shù),進而推算出任意一個時刻的用水率,并計算出一天的總用水量。如果還有余力可以增加更多的實際計算要求?!緮?shù)據(jù)處理概要】1. 關(guān)于原始數(shù)據(jù)中有

7、三個時刻水泵是在泵水的處理:由問題假設(shè)可以知道水塔中水流量是時間的連續(xù)光滑函數(shù),與水泵工作與否無關(guān),如果將這三個時刻的數(shù)據(jù)忽略不計,是不影響設(shè)計結(jié)果的。所以設(shè)計中忽略這三個時刻的數(shù)據(jù)。2. 關(guān)于確定求解哪些時刻的用水率問題:我采用每兩個時刻的中間時刻和這兩個時刻之間的時間段內(nèi)的平均用水率作為最后的若干時刻的用水率。3. 關(guān)于數(shù)據(jù)處理過程中三個無數(shù)據(jù)時刻的處理:按照處理需要,適當?shù)纳釛夁吘壍臄?shù)據(jù)和錯誤的結(jié)尾數(shù)據(jù)(比如要計算兩個值的差,最后一項后面已經(jīng)沒有數(shù)據(jù)了,系統(tǒng)會在該數(shù)據(jù)后產(chǎn)生一個零,所以是錯誤的數(shù)據(jù))?!驹敿氃O(shè)計】本設(shè)計報告按照我的設(shè)計步驟完成:1、將所給的數(shù)據(jù)中的時刻輸入到Excel表格

8、中,如下圖所示:2、計算出每兩個相鄰的時刻之間的時間差(表格列B(n)= A(n+1)- A(n)),然后除以2(表格列C(n)=A(n)+B(n)/2)得到相鄰兩個時刻的中間時刻:3、將原始數(shù)據(jù)中的水位數(shù)據(jù)輸入到該表格中:4、根據(jù)公式:V=PI*D*D*h/4計算各個時刻水塔中水的體積(表格列E(n)=PI*D*D* D(n)/4),然后求出各個時間段內(nèi)用水的體積(表格列F(n)=D(n)-D(n+1)):5、求中間時刻的用水率,即求該時間段(時刻差)內(nèi)的平均用水量(表格列G(n)=F(n)/B(n)):6、將中間時刻和中間時刻的用水率復(fù)制到另一張表中,以便處理(這時共產(chǎn)生22組數(shù)據(jù)):到這

9、里所有的數(shù)據(jù)處理已經(jīng)結(jié)束。接下來是研究數(shù)據(jù)所包含的規(guī)律,根據(jù)數(shù)據(jù)提出適當?shù)臄?shù)學(xué)模型,擬合一條光滑的連續(xù)的曲線。7、在Excel中有擬合曲線的工具,所以我先用Excel中的工具對這組數(shù)據(jù)進行了擬合畫出散點圖:通過添加趨勢線,來擬合光滑曲線:對數(shù)據(jù)擬合如圖像上圖,使用多項式趨勢線可以較合理的描述出數(shù)據(jù)的走向,用Excel很容易得出單位時間內(nèi)用水體積的表達式為y = -0.0001x5 + 0.0104x4 - 0.3254x3 + 4.3588x2 - 21.169x + 64.71用Excel對該系列數(shù)據(jù)擬合之后,嘗試用程序?qū)υ摂?shù)據(jù)進行計算,通過最小二乘法,最高次為5次,得出的各項系數(shù)如下經(jīng)過比

10、較,發(fā)現(xiàn)通過程序算得的數(shù)據(jù)與excel所得的表達式在可接受的誤差范圍之內(nèi)。將該系數(shù)替換原先表達式的系數(shù),即:y = -0.00015x5 + 0.012193x4 - 0.366317x3 +4.760591x222.665987x + 66.025230并在excel中生成相應(yīng)圖像:與之前的圖像進行對比,發(fā)現(xiàn)兩張圖的趨勢相差無幾,如此可以得到任意時刻的用水率的表達式為f(x) = -0.00015x5 + 0.012193x4 - 0.366317x3 +4.760591x222.665987x + 66.025230,要求一天的用水量,則對f(x)進行積分:V=024f(t)dt=-0.0

11、00025t6+0.0024386t5-0.09157925t4+1.58686367t3-11.3329935t2+66.02523t+C|024即可求的一天的用水總量.程序源代碼:#include#include#includevoid yongShuiLv();void yongShuiLiang();void gongLv();void Approx(float,float,int,int,float); void main()int i;float a6;/多項式的待定系數(shù)個數(shù)float x22=0.4605,1.382,2.396,3.41,4.4245,5.439,6.453,7

12、.467,8.4475,11.493,12.493,13.4145,14.4285,15.4425,16.3645,17.3785,18.484,19.498,20.399,23.419,24.433,25.447;/22個時刻的值float y22=51.12036405,44.10152093,39.3445281,36.88021926,36.08693844,33.01166479,34.61458483,35.33279747,38.44874,70.58616637,74.79205304,70.74232197,60.78930702,62.99681227,58.9959446

13、2,55.73472518,55.68433211,59.05993154,57.55529831,59.05993154,50.95438885,44.87523183;/22個時刻所對應(yīng)的用水率Approx(x,y,22,5,a);for(i=0;i=5;i+)printf(a%d=%fn,i,ai);printf(擬合多項式為:nf(t)=(%f)*t*t*t*t*t+(%f)*t*t*t*t+(%f)*t*t*t+(%f)*t*t+(%f)*t+(%f)n,a5,a4,a3,a2,a1,a0);yongShuiLiang();gongLv();char s;while(1)/通過判斷用

14、戶輸入的字符是Y/N,來控制是否繼續(xù)求某一時刻的用水率cout您是否還要查詢某時刻的用水率(Y/N):s;switch(s)case Y:yongShuiLv();break;case N:break;if(s=N)break;void Approx(float x,float y,int m,int n,float a)int i,j,t;float *c=new float(n+1)*(n+2);float power(int,float);void ColPivot(float *,int,float);for(i=0;i=n;i+)for(j=0;j=n;j+)*(c+i*(n+2)+

15、j)=0;for(t=0;t=m-1;t+)*(c+i*(n+2)+j)+=power(i+j,xt);*(c+i*(n+2)+n+1)=0;for(j=0;j=m-1;j+)*(c+i*(n+2)+n+1)+=yj*power(i,xj);ColPivot(c,n+1,a);delete c;void ColPivot(float *c,int n,float x)int i,j,t,k;float p;for(i=0;i=n-2;i+)k=i;for(j=i+1;j(fabs(*(c+k*(n+1)+i)k=j;if(k!=i)for(j=i;j=n;j+)p=*(c+i*(n+1)+j)

16、;*(c+i*(n+1)+j)=*(c+k*(n+1)+j);*(c+k*(n+1)+j)=p;for(j=i+1;j=n-1;j+)p=(*(c+j*(n+1)+i)/(*(c+i*(n+1)+i);for(t=i;t=0;i-)for(j=n-1;j=i+1;j-)(*(c+i*(n+1)+n)-=xj*(*(c+i*(n+1)+j);xi=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i);float power(int i,float v)float a=1;while(i-)a*=v;return a;void yongShuiLv()/計算某時刻的用水率函數(shù)float t

17、;cout請輸入任意一個時刻,程序?qū)⒕退愠鲈摃r刻的用水率t;float f=-0.00015*t*t*t*t*t+0.012193*t*t*t*t-0.366317*t*t*t+4.760591*t*t-22.665987*t+66.025230;coutt時刻的用水率是:f立方米/小時endl;void yongShuiLiang()/計算一天居民總的用水量float v;v=-0.000025*24*24*24*24*24*24+0.0024386*24*24*24*24*24-0.09157925*24*24*24*24+1.58686367*24*24*24-11.3329935*24*24+66

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論