第十节 最小二乘法
许多工程问题常常需要根据两个变量的几组实验数值(实验数据),来找出这两个变量间的函数关系的近似表达式。通常,这样得到的函数的近似表达式叫做经验公式。经验公式建立以后,就可以把生产或实验中所积累的某些经验提高到理论上加以分析。下面通过举例介绍常用的一种建立经验公式的方法。
例1:刀具磨损速度实验
为了测定刀具的磨损速度,我们进行这样的实验:经过一定时间(如每隔一小时),测量一次刀具的厚度,得到一组实验数据如下:
顺序编号 iii | 时间 ttt (h) | 刀具厚度 yyy (mm) |
---|---|---|
0 | 0 | 27.0 |
1 | 1 | 26.8 |
2 | 2 | 26.5 |
3 | 3 | 26.3 |
4 | 4 | 26.1 |
5 | 5 | 25.7 |
6 | 6 | 25.3 |
7 | 7 | 24.8 |
试根据上面的实验数据建立 yyy 和 ttt 之间的经验公式 y=f(t)y = f(t)y=f(t),也就是要找出一个能使上述数据大体适合的函数关系 y=f(t)y = f(t)y=f(t)。
解:
首先,要确定 f(t)f(t)f(t) 的类型。为此,可按以下方法处理。在直角坐标纸上取 ttt 为横坐标,yyy 为纵坐标,描出上述各对数据的对应点,如图9-12所示。从图上可以看出,这些点的连线大致接近于一条直线。于是,就可以认为 y=f(t)y = f(t)y=f(t) 是线性函数,并设 y=at+by = at + by=at+b 其中 aaa 和 bbb 是待定常数。
常数 aaa 和 bbb 如何确定呢?最理想的情况是选取这样的 aaa 和 bbb,能使直线 y=at+by = at + by=at+b 经过图中所标出的各点,但在实际情况中这是不可能的,因为这些点本来就不在同一条直线上。因此,只能要求选取这样的 aaa 和 bbb,使得 f(t)=at+bf(t) = at + bf(t)=at+b 在 t0,t1,t2,…,t7t_0, t_1, t_2, \ldots, t_7t0,t1,t2,…,t7 处的函数值与实验数据 y0,y1,y2,…,y7y_0, y_1, y_2, \ldots, y_7y0,y1,y2,…,y7 相差都很小,就是要使偏差 都很小。那么如何达到这一要求呢?能否设法使偏差的和
很小来保证每个偏差都很小呢?不能,因为偏差有正有负,在求和时可能互相抵消。为了避免这种情况,可以对偏差取绝对值再求和,只要
很小,就可以保证每个偏差的绝对值都很小。但这个式子中有绝对值记号,不便于进一步分析讨论。由于任何实数的平方都是正数或零,因此可以考虑选取常数 aaa 与 bbb,使
最小来保证每个偏差的绝对值都很小。根据偏差的平方和为最小的条件来选择常数 aaa 与 bbb 的方法叫做最小二乘法,这种确定常数 aaa 与 bbb 的方法是通常所采用的。
数学公式推导
现在我们来研究,经验公式 y=at+by = at + by=at+b 中,aaa 和 bbb 符合什么条件时,可以使上述的 MMM 为最小。如果把 MMM 看成与自变量 aaa 和 bbb 相对应的因变量,那么问题就可以归结为求函数 M=M(a,b)M = M(a, b)M=M(a,b) 在哪些点处取得最小值。由微积分可知,上述问题可以通过求方程组
将括号内各项进行整理合并,并把未知数 aaa 和 bbb 分离出来,便得
计算
通过表格计算 ∑ti=28,∑ti2=140,∑yi=208.5,∑tiyi=717.0\sum t_i = 28, \quad \sum t_i^2 = 140, \quad \sum y_i = 208.5, \quad \sum t_i y_i = 717.0∑ti=28,∑ti2=140,∑yi=208.5,∑tiyi=717.0
代入方程组,得到 140a+28b=717.0140a + 28b = 717.0140a+28b=717.0 28a+8b=208.528a + 8b = 208.528a+8b=208.5
解此方程组,得到 a=−0.3036,b=27.125a = -0.3036, \quad b = 27.125a=−0.3036,b=27.125
这样便得到所求经验公式为 y=f(t)=−0.3036t+27.125y = f(t) = -0.3036t + 27.125y=f(t)=−0.3036t+27.125
偏差分析
由上述公式算出的函数值 f(ti)f(t_i)f(ti) 与实测的 yiy_iyi 有一定的偏差。现列表比较如下:
iii | 时间 ttt (h) | 实测的 yiy_iyi (mm) | 计算的 f(ti)f(t_i)f(ti) (mm) | 偏差 |
---|---|---|---|---|
0 | 0 | 27.0 | 27.125 | -0.125 |
1 | 1 | 26.8 | 26.821 | -0.021 |
2 | 2 | 26.5 | 26.518 | -0.018 |
3 | 3 | 26.3 | 26.214 | 0.086 |
4 | 4 | 26.1 | 25.911 | 0.189 |
5 | 5 | 25.7 | 25.607 | 0.093 |
6 | 6 | 25.3 | 25.303 | -0.003 |
7 | 7 | 24.8 | 25.000 | -0.200 |
偏差的平方和 M=0.108165M = 0.108165M=0.108165,它的算术平方根 M=0.329\sqrt{M} = 0.329M=0.329。M\sqrt{M}M 称为均方误差,它的大小在一定程度上反映了用经验公式来近似表达原来函数关系的近似程度的好坏。
总结
在例1中,按实验数据描出的图形接近于一条直线。在这种情况下,就可认为函数关系是线性函数类型的,从而问题可以化为求解一个二元一次方程组,计算比较方便。还有一些实际问题,经验公式的类型不是线性函数,但可以设法把它化成线性函数的类型来讨论。
单分子化学反应速度的研究
问题描述
在研究某单分子化学反应速度时,得到了以下数据:
a | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
T | 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 |
y | 57.6 | 41.9 | 31.0 | 22.7 | 16.6 | 12.2 | 8.9 | 6.5 |
其中,T表示从实验开始算起的时间,y表示时刻T反应物的量。试根据上述数据定出经验公式y=f(T)。
数据分析
根据化学反应速度的理论,y=f(T)应是指数函数:y=ke^(mT),其中k和m是待定常数。对这批数据,先来验证这个结论。为此,在y=ke^(mT)的两边取常用对数,得:
lgy=(m⋅lge)T+lgk\lg y = (m \cdot \lg e)T + \lg klgy=(m⋅lge)T+lgk
记m·lg e即0.4343m=a, lg k=b,则上式可写为:
lgy=aT+b\lg y = aT + blgy=aT+b
于是lg y就是T的线性函数。所以,把表中各对数据(T,y) (i=1,2,…,8)所对应的点描在半对数坐标纸上,从图上看出,这些点的连线非常接近于一条直线,这说明y=f(T)确实可以认为是指数函数。
绘制半对数坐标图
在半对数坐标纸上绘制(T, y)的点,如图所示:
从图上可以看出,这些点的连线非常接近于一条直线,验证了y=f(T)可以认为是指数函数。
计算k和m的值
由于:
lgy=aT+b\lg y = aT + blgy=aT+b
可以仿照前面的讨论,通过求解方程组来确定a与b的值。
对数据进行处理,计算结果如下:
T | y | lg y | T*T | T*lg y |
---|---|---|---|---|
3 | 57.6 | 1.7604 | 9 | 5.2812 |
6 | 41.9 | 1.6222 | 36 | 9.7332 |
9 | 31.0 | 1.4914 | 81 | 13.4226 |
12 | 22.7 | 1.3560 | 144 | 16.2720 |
15 | 16.6 | 1.2201 | 225 | 18.3015 |
18 | 12.2 | 1.0864 | 324 | 19.5552 |
21 | 8.9 | 0.9494 | 441 | 19.9374 |
24 | 6.5 | 0.8129 | 576 | 19.5096 |
将它们代入方程组:
解得:
a=−0.0438,b=1.8964a = -0.0438, b = 1.8964a=−0.0438,b=1.8964
所以:
因此所求的经验公式为:
结论
通过对实验数据的分析,验证了反应物的量y与时间T之间的关系可以表示为指数函数,并具体确定了经验公式为:
此公式可以用于预测反应物在不同时间点的量,从而为单分子化学反应的研究提供了重要参考。