|
本帖最后由 roych 于 2015-6-29 17:49 编辑
昨天看到zzs225在论坛里发帖,说是想做一个任意值的查询(已知间隔半小时的温度(已知字段),如何通过查询获得任意时刻的温度(未知字段))。在为他解决这个问题之前,我们先来看一个有趣的命题:两点之间,曲线最短。
如果有人告诉你,这是真命题,会不会觉得这个想法很疯狂呢?事实正是如此。很容易举出例子来:
例如,假定我们需要从广州去北京,那么理论上最短的距离,应该是在地图把这两个地点找出来,连接成一条直线吧?——然而,如果我们用的是地球仪的话,你还会不会说这是一条直线呢?{:soso_e113:}
这就是鼎鼎有名的非欧几何。现在的问题是,为什么我们一般不会把它当做曲线呢?因为相对于整个地球的周长来说,这一段距离的变化,几乎可以视为直线。这就是我所要说的“化曲为直”。
同样地,在拥有大量数据的前提下,相对于整体数据的复杂变化,任意两个相邻的数据点之间的变化同样可以视为一个恒定的变化。也就是说,即便整个数据都是复杂变化的,任意两个相邻的点,只要足够它们足够接近,就可以视为线性的恒定变化。于是,插值法由此而生…【此处为Roych杜撰,如有雷同,纯属巧合{:soso_e120:}】
看到这里,也许大家已经有思路了吧:
- 把这个任意值在数据表中找出来。
- 如果在数据表里能找到的话,直接匹配就好了。
- 如果找不到,就找到与它相差最小的两个值。将这两个数据点视为一段直线,从而求出未知值来。至此,整体问题转化为一个一元一次方程的求解问题。
- 如果不在范围内,则无法进行插值。——这可以在输入的时候设置数据有效性来限制,详细见附件。
我们知道,Access是没有插值法的。如果需要用插值法,那么只能通过以下方式来求解:
——事实上,sxgaobo已经做了一个插值法的例子(见12楼)。他是创建出一个包含插值点的临时表来完成这个工作的。缺点:需要高精度数据(例如,精确到秒)时,不得不插入过多的数据而可能会影响运行速度。
- Excel公式。利用Trend函数来求值。创建Excel组件,把数据复制上去,利用公式来完成。要求:对Excel组件比较熟悉,编程娴熟。
- 纯数学方法。
——标准做法:最小二乘法。先求出拟合线性回归方程的一次系数与常数系数,再代入线性方程求解。问题是:你的数学那么好,你家人造吗?{:soso_e151:}
——便捷做法:直线函数法。解析几何学好了吗?一元一次方程学好了吗?{:soso_e144:}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|