王德貴
通過前幾期文章,我們對(duì)于數(shù)學(xué)黑洞有了一定的了解,今天我們繼續(xù)用Python來分析和研究數(shù)學(xué)黑洞——“冰雹猜想”。
我們先來了解一下“冰雹猜想”的來歷。
1976年的一天,《華盛頓郵報(bào)》于頭版頭條報(bào)道了一條數(shù)學(xué)新聞。文中記敘了這樣一個(gè)故事:
70年代中期,美國各所名牌大學(xué)校園內(nèi),人們都像發(fā)瘋一般,夜以繼日,廢寢忘食地玩弄一種數(shù)學(xué)游戲。這個(gè)游戲十分簡單:任意寫出一個(gè)正整數(shù)N,并且按照以下的規(guī)律進(jìn)行變換:
如果是個(gè)奇數(shù),則下一步變成3N+1。
如果是個(gè)偶數(shù),則下一步變成N/2。
不單單是學(xué)生,甚至連教師、研究員、教授與學(xué)究都紛紛加入。為什么這種游戲的魅力經(jīng)久不衰?因?yàn)槿藗儼l(fā)現(xiàn),無論N是怎樣一個(gè)數(shù)字,最終都無法逃脫回到谷底1。準(zhǔn)確地說,是無法逃出落入底部的4-2-1循環(huán),永遠(yuǎn)也逃不出這樣的宿命。
這就是著名的“冰雹猜想”,也叫“角谷猜想”“考拉茲猜想”“3X+1猜想”或“歸一問題”,也是著名的數(shù)學(xué)黑洞之一。
通過輸入一個(gè)正整數(shù),判斷其奇偶性,如果是偶數(shù)則除以2,如果是奇數(shù)則乘以3加1,如此反復(fù),直到結(jié)果為1。
所有循環(huán)條件就是結(jié)果不為“1”,因此使用while循環(huán)比較好,下面看程序設(shè)計(jì)。
程序涉及中國電子學(xué)會(huì)Python編程等級(jí)考試二級(jí)考試的內(nèi)容:程序的三種結(jié)構(gòu),即順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
經(jīng)過幾次數(shù)學(xué)黑洞這類問題的研究,類似的程序設(shè)計(jì)對(duì)我們來說已經(jīng)比較簡單了,語句也很好理解(圖1)。
if分支語句中的print()語句是為了能看到在做怎樣的運(yùn)算,最后輸出結(jié)果(圖2)。
用27測試,27的運(yùn)算過程如圖3,沒想到27居然需要這么多步才能進(jìn)入黑洞。
上述程序?yàn)檫f推法,我們也可以用遞歸法。那么就會(huì)涉及到等級(jí)考試四級(jí)的遞歸知識(shí)點(diǎn)。程序如圖4:
其驗(yàn)證結(jié)果與其他方法相同。
冰雹的最大魅力在于不可預(yù)知性。27是一個(gè)很小的自然數(shù),但是如果按照上述方法進(jìn)行運(yùn)算,則它經(jīng)過的運(yùn)算過程上浮下沉異常劇烈:首先,27要經(jīng)過77步的變換到達(dá)頂峰值9232,然后又經(jīng)過34步到達(dá)谷底值1。全部的變換過程(稱作“雹程”)需要111步,其頂峰值9232,接近原有數(shù)字27的342倍,如果以瀑布般的直線下落(2的N次方)來比較,則具有同樣雹程的數(shù)字N要達(dá)到2的111次方。其對(duì)比何其驚人(圖5)!
無論這個(gè)過程中的數(shù)值如何龐大,都會(huì)像瀑布一樣迅速墜落。而其他的數(shù)字即使不是如此,在經(jīng)過若干次的變換之后也必然會(huì)到純偶數(shù):4-2-1的循環(huán)。
冰雹猜想是否正確?一個(gè)思路是尋找反例,找到反例即說明猜想不成立。我們已經(jīng)編寫了計(jì)算機(jī)程序來驗(yàn)證一個(gè)數(shù)是否滿足猜想。而且當(dāng)X為正奇數(shù)時(shí),3X+1一定為偶數(shù),我們可對(duì)變換規(guī)則做出簡化:若X為奇數(shù),則變?yōu)椋?X+1)/2;若X為偶數(shù),則變?yōu)閄/2。
采用這個(gè)簡化規(guī)則可以加快程序運(yùn)行速度。
據(jù)日本和美國的數(shù)學(xué)家攻關(guān)研究,小于7*10^11的所有的正整數(shù),都符合這個(gè)規(guī)律。在這個(gè)龐大數(shù)量的驗(yàn)證中,并沒有找到反例。這樣看,冰雹猜想“很有可能”是正確的,但又不能絕對(duì)肯定。
不過,我們?nèi)钥赏ㄟ^編程來探究冰雹猜想的性質(zhì)。以X=500為例,我們把每一次變換得到的數(shù)畫成圖(注意這里用了簡化的變換規(guī)則)(圖6)。
變換過程中數(shù)字大小存在快速的上升下降,到最高點(diǎn)后很快落至1。另外,我們可以探究X變?yōu)?所需變換次數(shù)N與X的關(guān)系。在2≤X≤1000范圍內(nèi),N與X的關(guān)系圖如圖7(橫軸為lg X,縱軸為N)。
數(shù)據(jù)點(diǎn)大致分布在兩條平行直線之間,由于橫軸取了對(duì)數(shù),這表明N隨X大致以對(duì)數(shù)規(guī)律變化。當(dāng)然,我們并不能確定這一結(jié)論在更大范圍成立,這一結(jié)論是推測性的。
我看到過這項(xiàng)證明的英文版,有興趣的朋友可以自己查一下。本文也是我自己的心得,有不妥之處,請各位老師和同學(xué)斧正!