在後Google's Leap Second Smear Techinque提到的公式數學閏秒塗抹式
lie(t) = (1.0 - cos(pi * t/w))/2.0
沒有這背後的數學描述。有人可以解釋爲什麼該公式的作品。也可以用於任何我們想要在窗口上逐步同步時間並避免突然跳躍的情況?
在後Google's Leap Second Smear Techinque提到的公式數學閏秒塗抹式
lie(t) = (1.0 - cos(pi * t/w))/2.0
沒有這背後的數學描述。有人可以解釋爲什麼該公式的作品。也可以用於任何我們想要在窗口上逐步同步時間並避免突然跳躍的情況?
這是有效的,因爲cos(x)
的圖形隨着時間流逝而平穩變化。它不會突然改變,雖然它確實非線性地改變。
假設我們正在抹掉w = 86400
的窗口。這裏的謊言是從t = 0
到t = 86400
什麼:
在接近一天的開始,我們告訴謊言是非常小的。您報告的時間(t + lie(t)
)與實際時間應該幾乎相同(t
)。你報告的塗抹時間也隨着時間的推移非常緩慢地變化。理想情況下,每傳遞1秒,你應該報告1秒鐘過去。在抹黑的時候,你反而看到的是:
在接近中午,我們看到最大的變化。但是這些更改的順序爲10^-5
。它們足夠小,以至於任何接受時間模糊的人都不會懷疑有什麼不對。中午時分,你正在談論微妙時間移動的時間差異。
在谷歌的情況下,他們想要平穩地更改時間非常緩慢,以便不發生本地更正。如果他們突然改變時間一秒鐘,則可能會發生局部修正。而從博客文章來看,這聽起來像是通常會導致非常糟糕的事情發生(即事情中斷)。
有一點要注意的是,他們可能不會在一天內抹掉閏秒。可能會過一整年。在這種情況下,變化更小。在這種情況下,每天的變化大約爲納秒。
如果你想知道實際的數學 - 那部分不是很有趣。 cos(x)
以[-1,+1]爲界。在x = 0
我們有cos(0) = 1
和x = pi
,cos(pi) = -1
。值t/w
從t = 0 ... w
從0線性增加到1。所以cos(pi * t/w)
從+1
在t = 0
降到-1
在t = w
。剩下的就是這個。
cos(x)
的週期性質量其實非常重要。我們不能只選擇使用類似lie(t) = t/w
的東西。如果我們這樣做了,謊言總會隨着時間而增加。閏秒將繼續以每秒1/w
的速率堆積。 cos(x)
具有在-1
和+1
之間振盪的屬性。
我會猜測。
COS()輸出值的範圍在-1到+1 所以,當cos爲-1的最大謊言會是這樣,因爲
(1.0 - -1)/2 == 1.0
並且當cos爲1
最小(1.0 - 1)/2 == 0.0
請注意,0.0是「無謊言」的合適值,1.0是「閏秒」的合適值。
繼承人的函數的圖形,你可以看到它具有從0到1
爲用來計算參數爲cos表達一個很好的平滑漸變:pi * t/w
,他們可以被認爲是改變了函數從-1轉換到1的速度/間隔。使t更大使得它轉換得更快,而使w更大使得轉換更慢。
他們提到w是官方飛躍第二次應用之前的時間窗口,所以在幾秒鐘內就可以完成。那麼t可能會增加一些,可能又是秒。
什麼是愚蠢的解決方案!我很好奇爲什麼Google不僅僅做大多數時間精力充沛的人,而是使用沒有閏秒(如TAI或GPS時間)的時間計劃。 –