“你這老東西少賣關子,有屁趕緊一次放完,沒事兒我就掛了!”李學松教授笑罵著說道。
“掛了?那你肯定會後悔的!不和你扯淡了,你記得牛頓拉弗森方法吧?”
“廢話,這誰不記得!”
牛頓拉弗森方法,也就是牛頓在17世紀提出的一種在實數域和複數域上近似求解方程的方法,雖然在他們這些研究純粹數學的人裡面已經很少用這個方法了,但這個方法在計算機領域裡卻被應用的相當廣泛。
比如你要計算√2的值,先隨便猜個數比如說4,毫無疑問√2不可能等於4,但只要用牛頓迭代法一直迭代下去,經過n步迭代運算,總能算出1.414……。而如果你要是用2做猜測值,因為2和1.414足夠接近,只需要兩步迭代就能算出來。
李學松記得自己好像在和計算機專業的學生們上課時不止一次講過這一塊的知識點,只是他實在不知道這玩意兒有什麼好深挖的。
劉壽豐教授:“我剛又給你發了個郵件過去,裡面有一段已經翻譯成數學語言的演算法,你看過之後就知道我為什麼會對這個數字這麼驚訝了。”
聽到這句話,李學松教授忍不住翻了個白眼,但實在是架不住心裡的好奇,還是照著他說的點開了下一封郵件。
整個演算法本身沒什麼難的,不過是求平方根倒數而已。李學松教授甚至感覺,就算是沒有翻譯成數學的語言,自己也完全能看得懂。
簡單來說,那個0x5f375a86便是用來計算猜測值的一個常數。
因為使用牛頓迭代演算法求平方根倒數首先需要一個猜測值,這個值通常是根據使用者輸入的值,經過一系列的計算來確定的。
李學松教授隨便編了個數,試著用該演算法來求平方根倒數。
然而就在這時候,神奇的事情發生了!
他發現自己無論輸入什麼值,系統求出的猜測值都無比的近似最終結果,以至於整個演算法最多隻需要執行兩次就能結束迴圈。
而這一切的原因,便是因為那個0x5f375a86!
“不可思議……”漸漸發現了其中的奧秘,李學松教授喃喃自語地說道,“這個數到底是怎麼被發現的?”
他現在滿腦子都是一個問題。
為什麼偏偏是0x5f375a86?
劉壽豐教授用開玩笑的語氣說道:“這得問你,畢竟是你的學生弄出來的‘麻煩’。”
聽到這句話,李學松教授頓時驚了。
“我的學生?你確定?”
啥玩意兒?!
我咋不知道我有這麼牛逼的學生?