2
2
Ο
·29·
doi : 10
3969 /j
issn
Journal of Yangtze University ( Nat Sci Edit) J un
长江大学学报 (自然科学版) 2011 年 6 月 第 8 卷 第 6 期
6
2011 , Vol
8 No
1673
1409
2011
06
029
基于 VB 语言实现最小二乘法直线拟合
兰燕娜 , 薛同莲 , 李雅丽 , 崔荣华 (南通大学理学院 , 江苏 南通 226007)
[摘要 ] 阐述了最小二乘法原理 , 利用 Visual Basic 语言实现对试验数据的最小二乘法计算 , 可以迅速得直
线参数和相关系数 。
[关键词 ] 数据处理 ; 最小二乘法 ; 直线拟合 ; Visual Basic
[中图分类号 ] TP311
[文献标识码 ] A [文章编号 ] 1673
1409 (2011) 06
0092
03
1
物理实验学习过程中 , 有关数据处理尤其是最小二乘法的直线拟合计算是学习中的一个难点 。因为
计算繁琐 , 手工计算难以完成 , 所以利用计算机开发合适的处理软件成为当务之急 。同时 , 最小二乘法
在工程安全检测 、工程测量的各个方面都有广泛的应用[ 1 ] 。所以实现最小二乘法的自动化和智能化不仅
对学生处理物理试验数据有用 , 而且对工程技术人员有很大的实用价值[ 2 ] 。Visual Basic 作为一种可视
化的计算机编程语言 , 具有界面友好和编程简单的特点 , 为最小二乘法的计算提供了捷径 。下面 , 笔者
利用 Visual Basic 语言实现对试验数据的最小二乘法计算
。
1 最小二乘法原理
最小二乘法是提供 “观测组合”的主要工具之一 , 它依据对某事件的大量观测而获得 “最佳”结果
或“最可能”表现形式 。如已知 2 变量为线性关系 y = ax + b 对其进行 n ( n > 2) 次观测而获得 n 对数
据 ,若将这 n 对数据代入方程求解 a , b 之值则无确定解 。最小二乘法提供了一个求解方法 ,其基本思想就
是寻找“最接近”这 n 个观测点的直线[3 ] 。这条直线上各点相应的 y 值与测量值对应纵坐标值之偏差的平
方和在所拟合中应是最小的 。在相同试验测量条件下 ,测得自变量的值为 x1 , x2 , x3 , …, x n , 对应的物理量
依次为 y1 , y2 , y3 , …, y n 值 。用这一组数据 ,根据最小二乘法原理去求直线的经验方程 ,也就是要总的偏差
的平方和为最小 ,根据统计理论 ,有 :
n
n
x i y i -
n
i = 1
a =
i = 1
n
n
i = 1
x2
i
-
n
y i
i = 1
2
x i
x i
n
i = 1
n
i = 1
x2
i
y i
-
n
i = 1
n
n
i = 1
n
b =
x i
n
i = 1
x i y i
n
x2
i
-
i = 1
i = 1
2
x i
如果试验是在已知线性函数关系下进行的 ,那么用上述最小二乘法进行线性拟合 ,可得到最佳直线及
其截距 b 和斜率 a ,从而得到回归方程[4 ] 。
如果试验是要通过 x 、y 的测量来寻找经验公式 ,则还应判别由上述线性拟合所得的线性方程是否恰
当 。这可由 x 、y 的相关系数γ来判别 :
x)Σ( y i -
y)
x) 2 Σ( y i -
Σ( x i -
Σ( x i -
γ =
y) 2
相关系数大小表示了相关程度好坏 。γ的值在 0 和 1 之间 ,γ的绝对值越接近 1 , 说明线性越好 。
由以上公式可以看出 , 最小二乘法的思想虽然精妙 , 但是计算非常繁琐 , 为此笔者利用 VB 设计出
数据处理程序 , 该程序实现的功能是 : 在输入 n 组数据后 ,自动计算并且显示出 a , b,γ值 。
[ 收稿日期 ] 2011
[ 作者简介 ] 兰燕娜 , 女 , 硕士 , 讲师 , 现主要从事大学物理实验方面的教学与研究工作。
南通大学教学研究课题 (2010C05) 。
28
03
第 8 卷 第 6 期
兰燕娜等 : 基于 VB 语言实现最小二乘法直线拟合
·39·
2 最小二乘法直线拟合的 VB 程序
程序的主要代码如下 :
3
( Text1
Text)
Option Explicit
Option Base 1
Dim n As Integer
Dim i , j As Integer
Dim a , aa , R , aa1 , bb1 , cx , cy As Double
Dim b , bb , cc As Double
Dim XY () As Double , X () As Double , Y () As Double
Private Sub Command1 _ Click ()
Dim s As String , T As String
Dim pos As Integer
Dim k As Integer
Dim xx , xx1 , yy1 , yy As Double
Dim s1 As Double
Dim s2 As Double
Dim s3 As Double
Dim s4 As Double
s1 = 0
s2 = 0
s3 = 0
s4 = 0
n = Val
ReDim XY (2 , n)
ReDim X (n)
ReDim Y (n)
s = Text2
For i = 1 To n
k = 0
po s = pos + 1
Do While Mid (s , pos , 1) < > " " And po s < = Len (s)
po s = pos + 1
k = k + 1
Loop
XY (1 , i) = Mid (s , pos - k , k)
Next i
po s = 0
T = Text3
For i = 1 To n
k = 0
po s = pos + 1
Do While Mid ( T , pos , 1) < > " " And po s < = Len ( T)
po s = pos + 1
k = k + 1
Loop
XY (2 , i) = Mid ( T , pos - k , k)
xx = XY (1 , i) + xx
yy = XY (2 , i) + yy
Next i
xx1 = xx/ n
yy1 = yy/ n
For i = 1 To n
s1 = XY (1 , i)
s2 = XY (1 , i) + s2
XY (2 , i) + s1
1
1
1
1
1
1
XY (1 , i) + s4
- xx1
- yy1
XY (1 , j)
XY (2 , j)
s3 = XY (2 , i) + s3
s4 = XY (1 , i)
X (i) = XY (1 , i)
Y (i) = XY (2 , i)
Next i
For j = 1 To n
aa = X (j) + aa
bb = Y (j) + bb
aa1 = aa1 + XY (1 , j)
bb1 = bb1 + XY (2 , j)
Next j
cx = aa1 -
cy = bb1 -
cc = s1 -
R = cc/ Sqr
s3/ n
cy)
s2/ n
s3/ n
s2
s3
s2
(cx
1
1
1
1
1
2
1
2
1
1
2
1
·49·
长江大学学报 (自然科学版)
2011 年 6 月
3 实例分析
以惠斯通电桥测定铜丝在不同温度下的电阻值
试验为例 , 简要说明该程序的应用 。表 1 为试验原
始数据 。用 VB 处理数据的界面如图 1 所示 。
表 1 铜丝温度
电阻数据表
温度 t / ℃
电阻 R /Ω
25
32
40
47
54
60
67
73
1
0
1
0
0
8
1
7
21
21
22
23
23
24
24
25
34
91
58
15
73
27
80
32
把表 1 数据输入经处理得数值为 :
a = 0
08 b = 19
29 γ = 0
99980
图 1 最小二乘法程序的界面
γ > 0
999 , 表示试验数据线性良好 。
4 结 语
通过该程序 , 可以方便快捷地完成最小二乘法的计算 , 不仅可以得到直线参数 a 和 b 的值 , 而且得
到了相关系数的γ值 。该程序展示了 VB 在试验数据处理方面存在的巨大应用前景 。从应用情况来看 ,
可以利用 VB 开发出界面友好操作简便的各种功能的数据处理系统 , 为试验数据处理节省时间 , 提高效
率 , 为学生和科技工作者服务[ 5 ] 。
[参考文献 ]
[ 1 ] 郑健 , 杨洪国 , 马婷婷
[ 2 ] 米海珍 , 周凤玺 , 杨文侠
[ 3 ] 贾小勇 , 徐传胜 , 白欣
[ 4 ] 李雅丽 , 方靖淮
[ 5 ] 牛又奇 , 孙建国
测量平差与最小二乘法在工程测量中的应用 [J ]
黄土湿陷系数的偏最小二乘回归分析与模型 [J ]
最小二乘法的创立及其思想方法 [J ]
大学物理实验教程 [ M ]
新编 Visual Basic 程序设计教程 [ M ]
南京 : 南京大学出版社 , 2010
四川建筑 , 2010 , 30 (1)
178
兰州理工大学学报 , 2004 , 30 (2)
: 177
: 110
112
西北大学学报 (自然科学版) , 2006 , 36 (3)
: 507
511
苏州 : 苏州大学出版社 , 2006
[编辑 ] 洪云飞