二、目的与要求
1. 目的:
通过统计分析与预测的程序设计,使学生更加系统地理解和掌握C++语言的基本概念、语言特点和编程技巧。为学生提供了一个既动手又动脑,独立实践的机会。培养学生综合利用C++语言进行科学计算,同时在程序设计方面得到系统锻炼,使学生将所学知识转化为分析和设计简单实际问题的能力,学会查资料和工具书,为将来进一步学习C++、VC打下良好基础。
2. 基本要求:
(1)要求用模块化设计和C++的思想来完成程序的设计;
(2)要求用函数编写各个模块,分别存到不同的.CPP文件中;
(3)在VC环境中,学会编程知识和编程技巧,及时查究错误,独立调试完成。
3. 创新要求
在基本要求达到后,进行创新设计,如计算相关系数cor,并分析预测的趋势是否符合实际。
4. 书写设计报告的要求
设计报告中包含以下几个方面:
1、 设计题目
2、 总体设计
1) 概述所作系统的主要功能及用途。
2) 用自顶而下或自底而上的方法,划分功能模块。
3) 确定各模块的算法。
3、根据算法用图示的方式给出函数之间的调用关系。
4、写出程序中定义的各变量的含义。
5、列出C语言源程序代码程序清单,并加以必要的注释,提交.cpp和 .h文件的电子文档。
6、参考文献。
7、指出所设计问题的不足和更完善方案。
8、通过本次设计,有何收获及心得体会。
三、设计方法和基本原理
1. 问题描述:
(1)在统计学上,预找出一条直线,能反映数据的趋势,从而可以进行规划与预测。这就是一元一次回归分析。其公式为: Y=a+bx 其中:
10 10
b=∑(xi-mi)(yi-my) /∑(xi-mi) 2
i=1 i=1
在计算b的公式中,分母为计算X样本的方差公式。
a = My-bMx 其中:
10
my=1/n∑yi
i=1
10
mx=1/n∑xi
i=1
在相关系数计算公式中,分母分别为X样本和Y样本的均方差的计算公式。
在上述所有公式中,N是样本数据的个数。
(2)要求利用上述公式计算:从1970~1979十年的人均寿命,预测15年后,到1995年人均寿命。
样本数据如下:
年 Xi 平均寿命(Yi)
1970 1 69
1971 2 70
1972 3 72
1973 4 68
1974 5 73
1975 6 71
1976 7 75
1977 8 74
1978 9 78
1979 10 77
(3) 要求写出y的一元线性回归方程,计算出1995年时人均寿命y的值。
(4) 从理论上看相关系数:
10 10 10
cor=1/n∑(xi-mi)(yi-my) / (√1/n∑(xi-mxi)2 * √1/n∑(yi-myi)2)
i=1 i=1 i=1
若cor=0, 说明这条直线完全没有用处;
若cor=1, 说明这条直线完全符合实际情况;
若cor>0.81 , 说明这条直线就很好了。
根据计算出的相关系数,分析说明预测是否符合实际情况。
2. 问题的解决方案:
(1) 编写输入函数,从键盘输入或文件读取样本数据;
(2)编写不同的函数,先分别计算出平均值My和Mx,合理选择函数间参数传递的方式。
(3) 然后,编写计算系数b和a的函数;
(4)再编写计算出预测人均寿命y的函数;
(5)在输出函数中输出人均寿命的平均值、均方差、预测1995年的人均寿命y、回归方程式y=a+bx。
(6)编写主函数,调用上述函数,完成上述任务。
[此贴子已经被作者于2007-6-30 12:24:27编辑过]