数学背后谷歌闰第二涂抹公式

Bad*_*dri 23 math synchronization timestamp

谷歌Leap Second Smear Techinque中提到的公式:在午夜前的时间窗口内调节"谎言":

lie(t) = (1.0 - cos(pi * t / w)) / 2.0 
Run Code Online (Sandbox Code Playgroud)

没有描述这背后的数学.有人可以解释为什么公式有效.这也可以用于我们想要在窗口上逐渐同步时间并避免突然跳跃的任何情况吗?

Mik*_*ley 41

这是有效的,因为图表cos(x)随时间平滑变化.尽管它确实非线性地改变,但它并没有突然改变.

假设我们正在涂抹窗户w = 86400.这里的谎言是从什么t = 0t = 86400:

谎言图(t)

在一天的开始,我们所说的谎言非常小.您报告的时间(t + lie(t))几乎与实时时间相同(t).您报告的涂抹时间也随着时间的推移而变化非常缓慢.理想情况下,对于通过你的每1个实际秒,你应该报告1秒已经过去了.在涂抹时间,你看到的是:

涂抹时间的变化

到了中午,我们看到了最大的变化.但这些变化大约是10^-5.它们足够小,任何接受涂抹时间的人都不会怀疑出现问题.在中午,你谈的是微动差的移动速度.

在谷歌的情况下,他们要平稳地改变时间非常慢,这样才不会发生局部修正.如果他们突然将时间改变一秒钟,则可能发生局部校正.从博客文章来看,听起来这通常会导致非常糟糕的事情发生(即东西休息).

有一点需要注意的是,他们可能不会在一天之内涂抹闰秒.可能整整一年.在这种情况下,变化甚至更小.在这种情况下,日常变化大约为纳秒级.

如果你想知道实际的数学 - 那部分不是很有趣.cos(x)以[-1,+ 1]为界.在x = 0我们有cos(0) = 1和在x = pi,cos(pi) = -1.该值t / w从0线性增加到1 t = 0 ... w.因此,cos(pi * t / w)从变化+1t = 0向下-1t = w.其余部分由此而来.

周期性质量cos(x)实际上非常重要.我们不能只选择使用类似的东西lie(t) = t / w.如果我们这样做,谎言会随着时间的推移而增加.闰秒将继续以1 / w每秒的速度堆积.cos(x)具有在-1和之间振荡的属性+1.

  • 我不同意关于使用线性校正的最后一部分.虽然它不是那么平滑并且它确实可能导致问题,但谎言不会永远增加,因为当时间结束时系统将通过恒定输出替换它.它与`cos`也是一样的,一旦闰秒通过,谎言就变为零. (3认同)