直线拟合
一、功?/p>
本题目重要是用于将实验中得到的具有线性特征的一组数据通过最小二乘法拟合成直
线,求出其直线方程和绘制出该直线的图形?/p>
二、详细设?/p>
本题目的程序设计由三个窗体组成?/p>
?/p>
Form1
中,?/p>
1
个框架控件?/p>
1
个标签控件?/p>
2
个命令按钮和
1
个由
6
个单选按?/p>
组成的控件数组?/p>
单选按钮控件数组用来选择要输入的数据组数?/p>
当选择好后?/p>
单击
“确定?/p>
按钮,就可以进入下一个窗体。单击“取消”按钮则退出程?/p>
Form1
的代码见
附件
?/p>
?/p>
Form2
中有
2
个命令按钮?/p>
20
个文本框(每
10
个组成一个控件数组)
?/p>
12
个标?/p>
控件和许多直线组成。在文本框中输入实验数据后,点击“确定”按钮,若数据没有全部输
入,则出现消息框,提醒没有完全输入。若已经完全输入,则显示
Form3,
隐藏
Form2
。与
此同时,对实验数据计算,得出拟合直线的截距和斜率,并?/p>
Form3
的标签控?/p>
1
中体现;
根据所得的斜率和截距得到拟合直线方程,并在
Form3
的标?/p>
2
中体现;还可以在
Form3
中绘出拟合直线和每个实验点(用绿色)
,根据实验数据调整坐标系统,画出拟合直线?/p>
Form2
的代码见
附件
?/p>
三、调?/p>
一开始,我是在三楼上机,用的?/p>
VB6.0
,遇到的第一个问题是全局变量的设置问题?/p>
我不知道是我一个暑假把学的都忘了,最后终于在课本的帮助下成功做出来了?/p>
第二个问题是显示拟合直线。一开始,我在
Form3
中画了一个图片框,运行时总显?/p>
不了直线?/p>
后来索性将它删掉,
再次运行时终于能出现直线?/p>
可是直线的位置与设想相差?/p>
大了?/p>
连续尝试?/p>
1
个多星期后,
终于明白了,
原来我直接利用得到的直线方程的点的坐?/p>
在窗体上画直线是不对的,
因为我所画的坐标轴的单位长度和窗体的单位长度不相等,
之间
需要一定的转换。于是再次修改代码,可还是没有出现预想的情况。重新检查后?/p>
没有发现
程序错误。我又尝试输入一组特殊数据:
?/p>
1
?/p>
3
?/p>
?/p>
?/p>
2
?/p>
5
?/p>
?/p>
?/p>
3
?/p>
7
?/p>
?/p>
?/p>
4
?/p>
9
?/p>
?/p>
?/p>
5
?/p>
11
?/p>
,它
们的拟合直线应该?/p>
Y=2X+1,
斜率?/p>
2
,截距是
1
,可运行后的结果让我大吃一惊,斜率?/p>
-0.2
,截距是
-0.1
。我再次检查了数据计算部分的代码,没有发现错误,请教了好几位同?/p>
也没有解决问题,如此又郁闷了一个星期。不知什么时候,心中有种感觉——书上有错误?/p>
找来大学物理实验课本?/p>
果不其然?/p>
在第三十七页找到类似的公式,经计算,终于发现课程
设计课本上第
211
?/p>
“令
?/p>
?/p>
?/p>
?/p>
?/p>
?
m
i
i
X
X
m
m
i
i
M
1
2
2
)
(
1
?/p>
中的
?/p>
+
?/p>
号应改为
?/p>
-
?/p>
?/p>
修改后,
在调试过程中再也没出现什么大的问题?/p>
四、输入输出数?/p>
当选择
5
组数据时?/p>