数值分析家乡温度.docx

上传人:b****3 文档编号:24865050 上传时间:2023-06-02 格式:DOCX 页数:26 大小:1.01MB
下载 相关 举报
数值分析家乡温度.docx_第1页
第1页 / 共26页
数值分析家乡温度.docx_第2页
第2页 / 共26页
数值分析家乡温度.docx_第3页
第3页 / 共26页
数值分析家乡温度.docx_第4页
第4页 / 共26页
数值分析家乡温度.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

数值分析家乡温度.docx

《数值分析家乡温度.docx》由会员分享,可在线阅读,更多相关《数值分析家乡温度.docx(26页珍藏版)》请在冰豆网上搜索。

数值分析家乡温度.docx

数值分析家乡温度

淮海工学院计算机工程学院

实验报告书

课程名:

《数值分析》

题目:

计算水塔水流量

数值拟合问题

班级:

软件112

学号:

姓名:

 

课程设计题目1

计算水塔的水流量

一.题目描述

某居民区的民用自来水是由一个圆柱形的水塔提供,水塔高12.2米,直径17.4米,水塔是由水泵根据水塔内水位高低自动加水,一般每天水泵工作两次,现在需要了解该居民区用水规律也水泵的工作功率。

按照设计,当水塔的水位降至最低水位,约为8.2米时,水泵自动启动加水;当水位升高到一个最高水位,约10.8米时,水泵停止工作。

可以考虑采用用水率(单位时间的用水量)来反映用水规律,并通过间隔一段时间测量水塔里的水位来估算用水率,原始数据表式某一天的测量记录数据,测量了28个时刻,但是由于其中有3个时刻遇到水泵正在向水塔供水,而无水位记录。

试建立合适的数学模型,推算任意时刻的用水率、一天的总用水量。

进一步:

可自己增加一些新的计算功能。

原始数据(单位:

时刻(小时),水塔中水位(米))

时刻t

0

0.921

1.843

2.949

3.871

4.978

5.900

水位h

9.677

9.479

9.308

9.125

8.982

8.814

8.686

时刻t

7.006

7.928

8.967

9.9811

10.925

10.954

12.032

水位h

8.525

8.388

8.220

泵水

泵水

10.820

10.500

时刻t

12.954

13.875

14.982

15.903

16.826

17.931

19.037

水位h

10.210

9.936

9.653

9.409

9.180

8.921

8.662

时刻t

19.959

20.839

22.015

22.958

23.880

24.986

25.908

水位h

8.433

8.220

泵水

10.820

10.591

10.354

10.180

由问题的要求,关键在于确定用水函数,即单位时间内用水体积,记为f(t),又称水流速度。

如果能够通过测量数据,产生若干个时刻的用水率,也就是f(t)在若干个点的函数值,则f(t)的计算问题就可以转化为插值或拟合问题。

本问题假设:

1)水塔中水流量是时间的连续光滑函数,与水泵工作与否无关,并忽略水位高度对水流的影响。

2)水泵工作与否完全取决于水塔内水位高度。

3)水塔为标准圆柱体。

体积V=π/4*D^2*h,其中D为底面直径,h为水位高。

4)水泵第一次供水时间段为[8.967,10.954],第二次供水时间段为[20.839,22.958]。

2.在Excel中做表格

求出各时刻用水率

用Excel所做的曲线

三.程序代码

#include

#include

usingnamespacestd;

voidmain()

{

inti;

floata[6],t=0.0,s,S=0,p;

floatx[22]={0.4605,1.382,2.396,3.41,4.4245,5.439,6.453,7.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};

floaty[22]={51.12,44.10,39.34,36.88,36.09,33.01,34.61,35.33,38.45,70.59,74.79,70.74,60.79,63.00,59.00,55.73,55.68,59.06,57.56,59.06,50.95,44.88};

voidApprox(float[],float[],int,int,float[]);

Approx(x,y,22,5,a);

printf("**********************计算水塔的水流量********************************\n");

printf("求得的各时刻用水率分别为:

\nf(t)=%ft^5+%ft^4%ft^3+%ft^2%ft+%f\n",a[5],a[4],a[3],a[2],a[1],a[0]);

printf("各时刻用水量如下表\n");

printf("时间(h)\t\t用水量(m^3)\n");

for(i=0;i<24;i++)

{

s=a[5]*t*t*t*t*t+a[4]*t*t*t*t+a[3]*t*t*t+a[2]*t*t+a[1]*t+a[0];

S=s+S;

printf("%f\t%f\n",t,s);

t=t+1.0;

}

printf("************************该程序其他功能*************************\n");

printf("1.请输入你要查询的时刻:

");

scanf("%f",&p);

s=a[5]*p*p*p*p*p+a[4]*p*p*p*p+a[3]*p*p*p+a[2]*p*p+a[1]*p+a[0];

printf("%f时的用水率为:

%f(m^3)\n",p,s);

printf("2.总用水量为:

%f(m^3)\n",S);

system("pause");

}

voidApprox(floatx[],floaty[],intm,intn,floata[])

{

inti,j,t;

float*c=newfloat[(n+1)*(n+2)];

floatpower(int,float);

voidColPivot(float*,int,float[]);

for(i=0;i<=n;i++)

{

for(j=0;j<=n;j++)

{

*(c+i*(n+2)+j)=0;

for(t=0;t<=m-1;t++)

*(c+i*(n+2)+j)+=power(i+j,x[t]);

}

*(c+i*(n+2)+n+1)=0;

for(j=0;j<=m-1;j++)

*(c+i*(n+2)+n+1)+=y[j]*power(i,x[j]);

}

ColPivot(c,n+1,a);

deletec;

}

voidColPivot(float*c,intn,floatx[])

{

inti,j,t,k;

floatp;

for(i=0;i<=n-2;i++)

{

k=i;

for(j=i+1;j<=n-2;j++)

if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))

k=j;

if(k!

=i)

for(j=i;j<=n;j++)

{

p=*(c+i*(n+1)+j);

*(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<=n;t++)

*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));

}

}

for(i=n-1;i>=0;i--)

{

for(j=n-1;j>=i+1;j--)

(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));

x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));

}

}

floatpower(inti,floatv)

{

floata=1;

while(i--)a*=v;

returna;

}

4.运行结果截图

 

课程设计题目2

数值拟合问题

1.题目描述

在天气预报网站上获得你家乡所在城市当天24小时的气温变化的数据,认真观察分析其变化趋势,在此基础上运用样条方法求出温度变化的三次样条差值曲线。

然后将该曲线打印出来并与原来的温度变化数据形成的曲线进行比较,给出结论。

写出你研究设计中的心得体会。

2.数据

利用上面数据在Excel中作出如下表格

3.源程序

第一步代码

#include

#include

#include

usingnamespacestd;

constintMAX=50;

floatx[MAX],y[MAX],h[MAX];

floatc[MAX],a[MAX],fxym[MAX];

floatf(intx1,intx2,intx3){

floata=(y[x3]-y[x2])/(x[x3]-x[x2]);

floatb=(y[x2]-y[x1])/(x[x2]-x[x1]);

return(a-b)/(x[x3]-x[x1]);

}

voidcal_m(intn){

floatB[MAX];

B[0]=c[0]/2;

for(inti=1;i

B[i]=c[i]/(2-a[i]*B[i-1]);

fxym[0]=fxym[0]/2;

for(i=1;i<=n;i++)

fxym[i]=(fxym[i]-a[i]*fxym[i-1])/(2-a[i]*B[i-1]);

for(i=n-1;i>=0;i--)

fxym[i]=fxym[i]-B[i]*fxym[i+1];

}

voidprintout(intn);

intmain()

{

intn=23,i;

cout<<"请输入各时刻温度:

"<

for(i=0;i<=n;i++)

{

cout<

';

x[i]=i;

cin>>y[i];

}

for(i=0;i

h[i]=x[i+1]-x[i];

floatf0=0,f1=0;

c[0]=a[n]=0;

fxym[0]=2*f0;fxym[n]=2*f1;

for(i=1;i

fxym[i]=6*f(i-1,i,i+1);

for(i=1;i

{

a[i]=h[i-1]/(h[i]+h[i-1]);

c[i]=1-a[i];

}

a[n]=h[n-1]/(h[n-1]+h[n]);

cal_m(n);

cout<<"\n三次样条插值函数如下列所示:

\n";

printout(n);

return0;

}

voidprintout(intn)

{

ofstreamout("wxl.txt");

intRE=0;

cout<

for(inti=0;i

{

cout<

["<

out<

["<

floatt=fxym[i]/(6*h[i]);

if(t>0)

{

cout<

out<

}

else

{

cout<<-t<<"*(x-"<

out<<-t<<"*(x-"<

}

t=fxym[i+1]/(6*h[i]);

if(t>0)

{

cout<<"+"<

out<<"+"<

}

else

{

cout<<"-"<<-t<<"*(x-"<

out<<"-"<<-t<<"*(x-"<

}

cout<<"\n\t";

t=(y[i]-fxym[i]*h[i]*h[i]/6)/h[i];

if(t>0)

{

cout<<"+"<

out<<"+"<

}

else

{

cout<<"-"<<-t<<"*("<

out<<"-"<<-t<<"*("<

}

t=(y[i+1]-fxym[i+1]*h[i]*h[i]/6)/h[i];

if(t>0)

{

cout<<"+"<

out<<"+"<

}

else

{

cout<<"-"<<-t<<"*(x-"<

out<<"-"<<-t<<"*(x-"<

}

cout<

}

cout<

}

第二步代码

#include

#include

#include

#include

usingnamespacestd;

voidmain()

{

doubles=0;

ofstreamout("wxl2.txt");

for(doublex=0;x<=23;x=x+0.1)

{

if(x>=0&&x<1)

{

s=pow(0.332964*(x-0),3)+22*(1-x)+20.667*(x-0);

cout<

out<

}

if(x>=1&&x<2)

{

s=pow(0.332964*(2-x),3)-pow(0.331855*(x-1),3)+20.667*(2-x)+21.3319*(x-1);

cout<

out<

}

if(x>=2&&x<3)

{

s=pow(0.331855*(x-3),3)-pow(0.00554533*(x-2),3)+21.3319*(3-x)+20.0055*(x-2);

cout<

out<

}

if(x>=3&&x<4)

{

s=pow(0.00554533*(x-4),3)+pow(0.354036*(x-3),3)+20.0055*(4-x)+18.646*(x-3);

cout<

out<

}

if(x>=4&&x<5)

{

s=pow(0.354036*(5-x),3)-pow(0.410598*(x-4),3)+18.646*(5-x)+19.4106*(x-4);

cout<

out<

}

if(x>=5&&x<6)

{

s=pow(0.410598*(x-6),3)+pow(0.288357*(x-5),3)+19.4106*(6-x)+17.7116*(x-5);

cout<

out<

}

if(x>=6&&x<7)

{

s=pow(0.288357*(7-x),3)+pow(0.257168*(x-6),3)+17.7116*(7-x)+17.7428*(x-6);

cout<

out<

}

if(x>=7&&x<8)

{

s=pow(0.257168*(8-x),3)-pow(0.317031*(x-7),3)+17.7428*(8-x)+19.317*(x-7);

cout<

out<

}

if(x>=8&&x<9)

{

s=pow(0.317031*(x-9),3)+pow(0.010957*(x-8),3)+19.317*(9-x)+18.989*(x-8);

cout<

out<

}

if(x>=9&&x<10)

{

s=pow(0.010957*(10-x),3)+pow(0.273203*(x-9),3)+18.989*(10-x)+18.7268*(x-9);

cout<

out<

}

if(x>=10&&x<11)

{

s=pow(0.273203*(11-x),3)-pow(0.10377*(x-10),3)+18.7268*(11-x)+20.1038*(x-10);

cout<

out<

}

if(x>=11&&x<12)

{

s=pow(0.10377*(x-12),3)+pow(0.141878*(x-11),3)+20.1038*(12-x)+20.8581*(x-11);

cout<

out<

}

if(x>=12&&x<13)

{

s=pow(0.141878*(13-x),3)-pow(0.463741*(x-12),3)+20.8581*(13-x)+22.4637*(x-12);

cout<

out<

}

if(x>=13&&x<14)

{

s=pow(0.463741*(x-14),3)-pow(0.286914*(x-13),3)+22.4637*(14-x)+21.2869*(x-13);

cout<

out<

}

if(x>=14&&x<15)

{

s=pow(0.286914*(x-15),3)+pow(0.611395*(x-14),3)+21.2869*(15-x)+18.3886*(x-14);

cout<

out<

}

if(x>=15&&x<16)

{

s=pow(0.611395*(16-x),3)-pow(0.158668*(x-15),3)+18.3886*(16-x)+19.1587*(x-15);

cout<

out<

}

if(x>=16&&x<17)

{

s=pow(0.158668*(x-17),3)+pow(0.0232766*(x-16),3)+19.1587*(17-x)+18.9767*(x-16);

cout<

out<

}

if(x>=17&&x<18)

{

s=pow(0.0232766*(18-x),3)+pow(0.0655617*(x-17),3)+18.9767*(18-x)+18.9344*(x-17);

cout<

out<

}

if(x>=18&&x<19)

{

s=pow(0.0655617*(19-x),3)-pow(0.285523*(x-18),3)+18.9344*(19-x)+19.2855*(x-18);

cout<

out<

}

if(x>=19&&x<20)

{

s=pow(0.285523*(x-20),3)+pow(0.0765321*(x-19),3)+19.2855*(20-x)+17.9235*(x-19);

cout<

out<

}

if(x>=20&&x<21)

{

s=pow(0.0765321*(21-x

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1