安靜的教室里,筆尖劃過紙張的沙沙聲格外清晰。
林允寧戴著耳機,ThinkPad X40的屏幕上,Aether_v2_Robust.py的代碼已經構建出了核心的采樣器框架。
他正專注于定義貝葉斯后驗概率函數,指尖在鍵盤上以穩定的節奏敲擊著。
就在這時,教室墻上的老式喇叭“滋啦”一聲,隨即響起熟悉的眼保健操音樂與口令:
“為革命保護視力,眼保健操現在開始……第一節,揉天應穴……”
整個高三(7)班,像被按下了儀器開關,
所有學生,無論之前是在奮筆疾書還是偷偷打盹,都在瞬間停下了動作,條件反射般地舉起手,按向自己的眉骨。
后排的導演劉偉也下意識地揉了揉眉心,被這強大的集體主義慣性所裹挾。
唯有林允寧紋絲不動,像是進入了另一個時空維度。
他對耳邊的音樂充耳不聞,手指依舊在鍵盤上穩定地輸出邏輯符號。
“同學。”
桌沿被筆桿不耐煩地敲了兩下,發出“叩叩”的聲響。
一個略顯生硬的聲音從頭頂傳來:
“做眼保健操,沒聽見廣播?”
兩個戴著“值周”紅袖章的高個子男生站在那里,一臉公事公辦的表情。
林允寧敲擊鍵盤的節奏戛然而止。
高度集中的思路被強行打斷,他不悅地皺起眉,抬起頭時,那雙桃花眼里一片冰冷的茫然,過了足足兩秒,才重新聚焦。
劉偉立刻起身,準備上前交涉。
他很清楚,這種頂級的專注狀態一旦中止,可能就再也找不回來了。
但他還沒來得及開口,一個更具分量的聲音從后門炸響。
“查什么查?!吃飽了撐的?沒看見人家在忙正事?”
張國偉不知何時已經黑著臉站在了那里,他幾步走過來,中氣十足地對著那兩個值周生低吼:
“有意見讓你們老師來找我,你倆一邊兒呆著去,別在這兒礙事!”
值周生見到是高三年級出了名的“張老邪”,對視一眼,不敢再多言。
他們在本子上一劃,低著頭快步離開了。
張國偉哼了一聲,沒有立刻走,而是靠在后門框上,雙手抱胸,像一尊門神,為自己圈定的這片“保護區”站崗。
教室里,再次恢復了寧靜。
林允寧重新戴好耳機,直接開啟了【深度專注LV.1】手指的節奏越來越快。
這一次,他的代碼結構清晰無比,注釋專業而精煉。
# Define prior distributions for model parameters
# MCMC sampler setup: Metropolis-Hastings step
音樂結束,課間休息的嘈雜聲響起時,他正好完成了MCMC算法的最后調試。
運行。
筆記本的風扇開始加速,屏幕上不再是簡單的曲線,而是一組復雜的、由多個對稱“山峰”構成的“角圖”(Corner Plot)。
各參數的一維邊緣分布多為近似對稱的單峰;
兩兩關聯的子圖則呈現出明顯的傾斜橢圓,顯示出在強噪聲與錯核拉長下的參數相關性。
“我靠,寧神,”
宋子陽的腦袋湊了過來,表情像是看見了外星生物,“你這……電腦屏幕上又是什么神圖?”
林允寧沒理他,剛摘下耳機,準備將結果截圖,一個清脆又帶著一絲不確定的聲音從身旁傳來。
“林允寧……你這個是角圖吧?這是……在用蒙特卡洛方法嗎?”
他轉過頭,發現秦雅不知何時已經站在了他的座位旁。
她一只手拿著本物理習題冊,另一只手指著屏幕,語氣有些不確定,但眼睛里閃爍著求知的光芒,“我之前看一篇關于分子動力學模擬的論文,里面提到過用這種隨機采樣的方法,來處理高維參數空間。你……你這是在用馬爾可夫鏈蒙特卡洛嗎?”
她補充道,指尖下意識地攥緊了校服的衣角。
林允寧有些意外地看了她一眼,沒想到她不僅認識角圖,還能準確地說出MCMC方法。
這小丫頭,知識面可以啊。
“對,是馬爾可夫鏈蒙特卡洛。”
他言簡意賅地解釋道,“我這里有個反演問題,沒法直接求出精確解,所以用它來框定參數的后驗概率范圍。”
秦雅若有所思地點了點頭,沒有再追問細節,只是將“后驗概率”這幾個字牢牢記在心里,然后才想起了本來的目的,舉起手里的習題冊:
“這道關于電容器的題……我有點不明白。”
林允寧瞥了一眼,是道有點復雜的電磁學題。
他隨手拿過一支筆,在草稿紙上畫了個草圖,三兩句就點明了關鍵。
最前排,趙宇軒的眼角余光偷偷將這一切都瞧在心里,咬了咬牙,將頭埋得更深。
聯考在即,分數才是一切。
搞這些花里胡哨的東西,不過是嘩眾取寵。
在秦雅道謝離開后,林允寧將結果截圖,附上一段簡短的說明,通過QQ發給了韓至淵。
這一次,QQ卻彈出了自動回復:
【正在開會,有事請留言,稍后聯系。】
林允寧松了口氣,正準備起身活動活動,QQ上陳正平的頭像卻閃動起來。
【陳正平】:林師弟,韓老師剛才給我看了你的結果,第一關過得漂亮!他說如果你覺得第二關也完成了,讓我將最后一個考驗的數據發給你。他開會回來再和你聊。
林允寧笑了笑,打字回復:【多謝師兄,第二關的代碼我已經發給韓老師了,你能把后面的數據傳過來嗎?】
【陳正平】:(驚訝表情)這么快?第二組是‘臟數據’,信噪比特別低,IRF也不對稱,你怎么改進算法的?
【林允寧】:我用了MCMC和貝葉斯框架,我想著與其去找那個不可能存在的精確解,不如用蒙特卡洛模擬搜索解的概率分布。
【陳正平】:MCMC?我靠,這個思路……絕了!放棄精確解,轉而去勾勒整個后驗概率分布……林師弟,你的思維太靈活了!我這就把最后一組數據發給你。
很快,兩個文件stress_test_data.dat和instrument_response_B.dat便傳了過來。
【陳正平】:韓老師讓我轉告你,這份數據的真實IRF并非文件B,而是另一個文件。也就是說,他給了你一個錯誤的儀器響應函數(IRF)。
【陳正平】:你的任務,不是去猜正確的儀器響應函數是什么。而是用你手中的這個錯誤的IRF去完成測量,然后通過你的數據分析,證明IRF是錯的,并盡可能地描述它錯在哪里。
【陳正平】:韓老師的原話是:“記住,在科研里,發現并證明一個系統性誤差,比得到一個看似漂亮的結果,重要得多。”
林允寧的眼神一凝。
他立刻明白了韓至淵的真正意圖。
這第三關考驗的,已經不是解題能力,而是一名科研工作者最核心的品質——
科學上的誠實與懷疑精神。
他深吸一口氣,下載了文件,加載了數據和那份錯誤的IRF_B.dat,再次運行了Aether_v2_Robust.py。
這一次,MCMC算法依然給出了一個收斂的結果。
屏幕上彈出的角圖依舊“漂亮”,所有參數都給出了清晰的后驗概率分布。
但很可惜,一張漂亮的角圖,不代表其背后是正確的物理。
算法是強大的,它在錯誤的IRF約束下,MCMC采樣依然收斂,盡職盡責地找到了一個數學上的“最優解”。
如果是普通人,看到這個結果,或許已經宣告勝利。
但林允寧清楚,這很可能是一個陷阱。
他的目光略過那張漂亮的結果圖,直接點開了那個最容易被忽略,卻也最關鍵的窗口——“殘差圖”。
屏幕上,代表誤差的點并沒有像預期的那樣,圍繞零軸隨機波動。
取而代之的,是一條清晰的、具有系統性結構的‘W’形波紋。
這種非隨機的結構性殘差,是模型與真實數據存在系統性失配的明確信號。
它無聲地宣告著一個事實:
你的理論模型,與真實的物理過程之間,存在偏差。
“叮鈴鈴——”
自習課結束的鈴聲響起。
宋子陽興奮地拍了拍林允寧的肩膀:
“寧神,走,干飯去!今天食堂有糖醋里脊!”
林允寧沒有動。
他摘下耳機,外界的喧囂涌入,但他什么也聽不見。
專注的目光,在那張畫著‘W’形波紋的殘差圖上反復審視。
許久,他的手指無意識地在桌上敲了敲,靠在椅背上,用只有自己能聽見的聲音嘟囔著:
“所以,在錯誤的 IRF下,算法收斂得再漂亮,也只是一個最完美的錯誤答案……”
他伸手關掉了那張看似完美的“角圖”,目光重新移回到那張“丑陋”的殘差圖上,臉上笑意盎然:
“……不過,有價值的信息,恰恰藏在這份系統誤差里。”
……