计算机数学基于正态分布与累计频率编程设计报告概要.docx
- 文档编号:9473463
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:15
- 大小:429.85KB
计算机数学基于正态分布与累计频率编程设计报告概要.docx
《计算机数学基于正态分布与累计频率编程设计报告概要.docx》由会员分享,可在线阅读,更多相关《计算机数学基于正态分布与累计频率编程设计报告概要.docx(15页珍藏版)》请在冰豆网上搜索。
计算机数学基于正态分布与累计频率编程设计报告概要
绘制车速正态分布和累积频率分布曲线
课程名称:
计算机数学
学院:
信息工程学院
专业:
软件工程
姓名:
谢磊金
学号:
2014124089
教师:
完成时间:
6月1日
二〇一五年六月
目录
1引言3
1.1背景3
1.2需求分析3
2设计与实现5
2.1正态分布函数理论基础5
2.2详细设计6
2.3设计流程图9
2.4开发环境以及部署环境要求9
2.5主要源码9
3测试12
3.1测试环境12
3.2测试计划12
3.3测试项目及结果13
4总结14
1引言
行车速度既是道路规划设计中的一项重要控制指标,又是车辆运营效率的一项主要评价指标,对于运输经济、安全、迅捷、舒适具有重要意义。
统计分析是对行车速度特性分析的主要方法之一。
1.1背景
行车速度的统计分布特性
行车速度与交通量一样,是一个随机变量。
研究表明,在乡村公路和高速公路路段上,运行车速一般呈正态分布,在城市道路或高速公路匝道口处,车速分布比较集中,一般呈偏态分布。
对行车速度进行统计分析,一般要借助车速分布直方图和车速频率、累计频率分布曲线。
表征车速统计分布特性的特征车速常用:
185%位车速
在该路段行驶的所有车辆中,有85%的车辆行驶速度在此速度以下,只有15%的车辆行驶速度高于此值,交通管理部门常以此速度作为某些路段的最高限速。
215%位车速
意义类前。
在高速公路和快速道路上,为了行车安全,减少阻塞排队现象,要规定低速限制,15%位车速常被作为某些路段的最低限速。
1.2需求分析
1、需求
表1给出了在某区间采集到的车速观测原始数据,试通过车速频率分布图分析该区间行车速度特性。
(注意:
表中只给出了部分数据。
)
表1某区间车速观测原始数据(km/h)
31
41
38
28
51
39
45
42
33
43
41
51
37
51
26
23
34
38
40
48
33
35
40
41
43
46
58
50
48
47
46
53
43
33
39
45
41
34
33
29
40
44
37
35
40
38
30
53
44
53
2、问题分析
该问题属于数据统计范畴,使用图形方式分析数据比较直观。
车速频率分布曲线一般生成过程如下:
采集区间车速,将区间车速从小到大进行排序,并找出最大车速和最小车速。
采集所有车速数据,对数据进行处理计算拟合成正态分布曲线,计算出正态分布公式
,然后在程序上绘制出表示车速频率分布的正态分布曲线。
计算每个速度区间的中间值及每组车速出现的频率。
用车速分组的中间值为横坐标,分组车速出现的频率计算出每组分布累计频率,并绘制出累计频率分布曲线。
根据车速频率分布曲线(或累计频率分布曲线)得到所需指标。
3、约束条件
由于正态分布数据在计算累计频率需要进行积分计算,难度有点大。
获取的数据由于数量有限,在拟合的过程中不免会有误差,不能完美拟合正态分布规律。
4、功能需求
1、采集数据,从文档中读出数据并进行处理
2、根据采集的数据进行拟合,计算出其符合的正态分布规律
3、绘制车速频率的正态分布曲线
4、根据车速频率计算出车速累计频率
5、绘制车速累计频率分布曲线
6、算出85%和15%位车速
5、用户界面需求
(1)打开文件按钮
(2)计算车速频率分布按钮
(3)计算车速累计分布频率按钮
(4)坐标系和数据列表
(5)15%车速和85%车速
图1.1
2设计与实现
在准备工作阶段已思考好该程序需要实现哪些功能及运用什么实现,画好流程图,做好简单笔记,以便理清思路,提高编写代码时的效率。
完成程序后在进行运行、修改、提高,还要对正态分布计算公式进行学习。
2.1正态分布函数理论基础:
正态分布(Normaldistribution)又名高斯分布(Gaussiandistribution),是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。
若随机变量X服从一个数学期望为μ、标准方差为σ2的高斯分布,记为:
X∼N(μ,σ2),
则其概率密度函数为
正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。
因其曲线呈钟形,因此人们又经常称之为钟形曲线。
我们通常所说的标准正态分布是μ=0,σ=1的正态分布。
2.2详细设计
1坐标系与数据列表设计
由于需要绘制2种不同的曲线图,所以需要在窗口建立合适的坐标系,将原来窗口的坐标系通过坐标换算变成现在新的坐标系。
而列表用来显示数据的序号,速度,频率主要信息。
2正态分布公式计算设计
概率密度函数
图2.1
四个不同参数集的概率密度函数(如图2.1绿色线代表标准正态分布)
正态分布的概率密度函数均值为μ 方差为σ2 (或标准差σ)是高斯函数的一个实例:
如果一个随机变量X服从这个分布,我们写作 X ~ N(μ,σ2).如果μ=0并且σ=1,这个分布被称为标准正态分布,这个分布能够简化为
如图2.1是给出了不同参数的正态分布的函数图。
正态分布中一些值得注意的量:
密度函数关于平均值对称
平均值是它的众数(statisticalmode)以及中位数(median)
函数曲线下68.268949%的面积在平均值左右的一个标准差范围内
95.449974%的面积在平均值左右两个标准差2σ的范围内
99.730020%的面积在平均值左右三个标准差3σ的范围内
99.993666%的面积在平均值左右四个标准差4σ的范围内
反曲点(inflectionpoint)在离平均值的距离为标准差之处
正态分布公式:
所以只需要计算u和σ值就可以得到正态分布公式。
经过一系列计算可以得到:
故,计算出正态分布公式,在依次取点计算出坐标值进行绘制曲线。
3车速累计频率计算设计
累积分布函数
图2.2
如图2.2所示的概率密度函数的累积分布函数
累积分布函数是指随机变量X小于或等于x的概率,用密度函数表示为
正态分布的累积分布函数能够由一个叫做误差函数的特殊函数表示:
标准正态分布的累积分布函数习惯上记为Φ,它仅仅是指μ=0,σ=1时的值,
将一般正态分布用误差函数表示的公式简化,可得:
它的反函数被称为反误差函数,为:
该分位数函数有时也被称为probit函数。
probit函数已被证明没有初等原函数。
正态分布的分布函数Φ(x)没有解析表达式,它的值可以通过数值积分、泰勒级数或者渐进序列近似得到。
原本计算累计频率只需要对车速频率公式进行积分计算,但由于车速频率公式是一个正态分布公式,计算积分比较难,所以换成了面积累积法计算累计频率。
以速度从0取到100,每个区间的面积表示频率,该速度与之前所有速度频率之和累加起来为累计频率。
从而算出各分部的累积频率,在进行绘图。
(取值0至100,其间精确到小数点后7位)
2.3设计流程图
图2.3
2.4开发环境以及部署环境要求
虚拟机里Win7系统下的vc++6.0编译器的mfc编写程序
2.5主要源码
这里显示出各部分主要源码:
1计算车速频率分布:
sum=0;
mean=0;
u=0;
main=0;
sumn=0;
xie=0;
for(i=0;i { sum=sum+Data[i]; } mean=sum/length; for(i=0;i { sumn=sumn+pow((Data[i]-mean),2); } sumn=sumn/length; main=sqrt(sumn); for(i=0;i<100;i++) { k1=-1*pow((i-mean),2); k2=2*sumn; k3=sqrt(2*PI)*main; y[i]=(exp(k1/k2))/k3*100; } Invalidate(); UpdateWindow(); … for(i=0;i<99;i++) { dc.MoveTo(100+(i)*4,400-(y[i]*30));//画线 dc.LineTo(100+(i+1)*4,400-(y[i+1]*30)); } m_list.DeleteAllItems(); CStringstr1,str2,str3; for(i=0;i<100;i++) { j=i; str1.Format("%d",i+1); str2.Format("%d",j); str3.Format("%f",y[i]); m_list.InsertItem(i,str1); m_list.SetItemText(i,1,str2); m_list.SetItemText(i,2,str3); } 3.4.4计算累计频率分布: sum=0; mean=0; u=0; main=0; sumn=0; xie=0; … Invalidate(); UpdateWindow(); … for(i=0;i<100;i++) { yy[i]=yy[i-1]+y[i]; } for(i=0;i<99;i++) { dc.MoveTo(100+(i)*4,400-(yy[i]*3));//画线 dc.LineTo(100+(i+1)*4,400-(yy[i+1]*3)); } intflag; for(intb=99;b>=0;b--) { if(yy[b]<=85&&yy[b+1]>=85) { flag=b+1; break; } } CStringstr4; str4.Format("%d",flag); GetDlgItem(IDC_EDIT1)->SetWindowText(str4); m_list.DeleteAllItems(); CStringstr1,str2,str3; for(intii=0;ii<100;ii++) { str1.Format("%d",ii+1); str2.Format("%d",ii+1); str3.Format("%f",yy[ii]); m_list.InsertItem(ii,str1); m_list.SetItemText(ii,1,str2); m_list.SetItemText(ii,2,str3); } 3测试 首先测试各个子菜单的功能是否都实现,再运行整个程序,看所要实现的功能是否都完全实现,并且检查还有无需要改进的功能。 3.1测试环境 Win7系统下的vc++6.0编程软件里的mfc编程MFC下编写程序。 3.2测试计划 查看所有要实现的功能,并对其进行修改和完善。 精通该程序,检验该程序的基本功能是否还存在漏洞。 检验其在各个环境下是否能正常运行 3.3测试项目及结果 项目: 1、所有控件功能是否正常 2、数据处理是否出错 结果: 经过不断的修改完善所有要是要实现的功能均已实现。 1.导入数据 图3.1 2.计算车速频率: 图3.2 3.计算累计频率: 图3.3 4总结 经过了一学期计算机数学的学习,让我深刻的认识到计算机与数学理论关系的明显性,计算机学者必须要具备较强的逻辑思维和解决问题的能力,这些能力是通过学习数学时取得的,而且取得量和质量也是和学习和训练的数学知识的高深程序成正相关。 将计算机和数学结合起来学习,很好的锻炼了我们的数学和编程能力。 完成此次作业后,学习到了不少东西。 本次作业在处理累计频率过程中不足之处: 使用面积法误差大,应该使用积分法进行计算,有待改进。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 数学 基于 正态分布 累计 频率 编程 设计 报告 概要