欢迎来到天天文库
浏览记录
ID:55035869
大小:1.02 MB
页数:22页
时间:2020-04-26
《数值分析课程设计实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数值分析课程设计实验报告班级:软件111姓名:吴明洲学号:一、计算水塔的水流量1、将所给的数据中的时刻输入到Excel表格中,如下图所示:2、计算出每两个相邻的时刻之间的时间差(表格列B(n)=A(n+1)-A(n)),然后除以2(表格列C(n)=B(n)/2)得到相邻两个时刻的中间时刻:3、将原始数据中的水位数据输入到该表格中:4、根据公式:V=PI*D*D*h/4计算各个时刻水塔中水的体积(表格列E(n)=PI*D*D*表格列D(n)/4),然后求出各个时间段内用水的体积(表格列F(n)=D(n+1)-D
2、(n)):5、求中间时刻的用水率,即求该时间段(时刻差)内的平均用水量(表格列G(n)=F(n)/B(n)):6、将中间时刻和中间时刻的用水率复制到另一张表中,以便处理(这时共产生22组数据):到这里所有的数据处理已经结束。接下来是研究数据所包含的规律,根据数据提出适当的数学模型,拟合一条光滑的连续的曲线。7、在Excel中有拟合曲线的工具,所以我先用Excel中的工具对这组数据进行了拟合*画出散点图:*确定横纵坐标的意义:*形成散点图:*通过添加趋势线,来拟合光滑曲线:*得到拟合的函数曲线,以及表达式在Ex
3、cel中就可以很方便的拟合出比较符合要求的曲线,并且可以得到函数表达式。然后开始尝试利用编程解决这个问题,也就是说用编程的方法得到相同的函数表达式!最小二乘法通常用于曲线拟合,所谓拟合是指已知某函数的若干离散函数值{f1,f2,…,fn},通过调整该函数中若干待定系数f(λ1,λ2,…,λ3),使得该函数与已知点集的差别(最小二乘意义)最小。如果待定函数是线性,就叫线性拟合或者线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。表达式也可以是分段函数,这种情况下叫作样条拟合。而插值是指已知某函数的在若
4、干离散点上的函数值或者导数信息,通过求解该函数中待定形式的插值函数以及待定系数,使得该函数在给定离散点上满足约束。插值函数又叫作基函数,如果该基函数定义在整个定义域上,叫作全域基,否则叫作分域基。如果约束条件中只有函数值的约束,叫作Lagrange插值,否则叫作Hermite插值。从几何意义上将,拟合是给定了空间中的一些点,找到一个已知形式未知参数的连续曲面来最大限度地逼近这些点而插值是找到一个(或几个分片光滑的)连续曲面来穿过这些点。可以看出利用最小二乘法拟合比较方便,我采用的函数形式为多项式函数,最高次为
5、5。拟合部分代码执行结果如下:经过比较,可以发现在误差允许的范围内通过Excel拟合出来的函数和通过编程而拟合出来的多项式是相统一的。然后再将该函数应用到Excel中,利用程序代码所求出来的多项式,画出一条光滑连续的曲线,如果这条曲线和最上面在Excel中,纯粹用Excel拟合出来的曲线相同的话表明拟合成功!1、按照递增的顺序,将从0-24的数据输入到Excel中,如下图所示。并在第二列中输入公式:=-0.00015*A2*A2*A2*A2*A2+0.*A2*A2*A2*A2-0.*A2*A2*A2+4.*A
6、2*A2-22.*A2+66.02523,如下图所示。将数据填充完毕:利用和上面的相同的方法,直接选择光滑的曲线图,而不是选择散点图:然后就画出了一条曲线:经过比较,可以知道在误差允许的范围内数学模型已经成功建立!到这里该问题的数学模型已经建立好了(采用编程所得的结果进行建模和进一步的计算):f(t)=-0.00015t5+0.t4-0.t3+4.t2-22.t+66.最后再通过编程计算任意时刻的用水率、一天的总用水量和水泵的工作功率:任意时刻的用水率的算法简单,只要给出任意时间,根据上面的式子就可以求出;一
7、天的总用水量为上式在0-24内的积分V=∫024f(t)dt=[-0.t6+0.t5-0.t4+1.t3-11.t2+66.02523t+C]024水泵的工作功率的计算方法是用一次的总泵水量除以泵水时间水泵泵一次水泵水量为:V=2*PI*D*D*(h2-h1)/4=2*3.*17.4*17.4*(10.82-8.22)/4泵水时间为:T=t2-t1=(10.954-8.967)+(22.958-20.839)所以水泵的工作功率为:P=ρVg(h2-h1)/2T其中ρ为水的密度(kg/m3),V为上面的体积(m
8、3),g为重力单位(9.8N/kg)。然后将程序加以修改,将上述的三个求解功能加进去就完成了本次设计。最终源代码:#include#include#includevoidyongShuiLv();voidyongShuiLiang();voidgongLv();voidApprox(float[],float[],int,int,float[
此文档下载收益归作者所有