如何開始科學研究 (5)

 

重現結論

當我們了解如何快速判斷文獻對我們研究的重要性之後,我們應該可以找到一些核心論文,針對我們想要研究的主題有一些關鍵的看法。這個時候,就是要下功夫把這些關鍵看法搞清楚。所謂的搞清楚不是把他背起來,在筆記上記下來。而是從一開始的假設開始,重現關鍵結論。

系統定義

第一個任務就是,搞清楚系統到底是什麼?是描述電子媽?還是描述費米子?有自旋的費米子嗎?還是無自旋的費米子?是束縛住的費米子嗎?還是會到處跑來跑去的費米子?有交互作用嗎?我們是討論平衡態還是動力學問題?系統的Hamiltonian和Hilbert space長什麼樣子?

從我的經驗裡我得到一個蠻令人吃驚的結論,很多困惑,其實都是源自對系統的定義不明。當把問題定義清楚後,常常就成功了一大半。至少,不會雞同鴨講,而可以與同儕有意義的討論。

解析推導

可以推出相對應的方程式,以及了解方程式的推導邏輯與假設。推論的過程可以是建基於數學必然性也可能是建基於物理論述。因此,等號($=$)、近似($\approx$)、漸進行為($\sim$)是意義上完全不同的,要小心思考。一個小技巧是,把物理論述和數學結構分開。這樣才可以追蹤可能的漏洞是來自於物理、或非物理的理由,而對於結論的適用性有更明確的理解。

數值方法

如果搞清楚發生什麼事,一定可以寫一個簡單的程式測試自己的理解。面對困難的問題時,可能無法一步到位寫下很專業的程式,那沒有關係,這裡的重點是:寫出一個最陽春,概念最清楚,簡單到每一步都知道發生什麼事的程式,測試對解析推導的理解。

所以這個階段首重正確性而非效率。以理論物理來說,常用的工具有

  1. Mathematica:內建許多函數,不需要從頭開始發展,但是要付費。
  2. Python:免費、也具有大量函式庫,並且不需要編譯(compile),因此可以簡化開發過程。
  3. C/C++:免費、也具有大量函式庫,但是需要編譯(compile),因此開發過程繁瑣,但是效能非常高。

可以的話,研究初期基本上應該以前兩者作為重現結論的手段,而非效能取向的3。當對問題的掌握性夠好後,在考慮改進2或選擇3提升數值方法的效能。

參數空間

測試相關結論的參數空間是否為真。除了數值驗證外,挑出幾個極端的情況測試解析推導的結論,也是了解該文獻一致性的重要指標。

重現結論的價值

可能有些人會想:這研究都被做出來了,重現可以幹嘛?又不能投稿期刊,這不是浪費時間嗎?

第一個目的,當然是我們要爬山的時候,都會想確認腳下的石頭穩不穩。往左踩很穩,往右踩有一點點晃。那我最好拿這顆石頭往左邊前進。

第二個目的,這些石頭都有署名,每次踩到黃色的石頭都很不穩,我下次就不踩了。因為我對這個來自黃家庄的石頭沒信心。與其踩上去,還不如我挑一個又大又平的擺在我未來的道路上。

第一個目的加強研究者自身的能力,第二個目的幫助研究者趨吉避凶。想像你辛辛苦苦讀了博士班五年,最後一年的時候,發現你引用的關鍵論文,結論是錯的,那真的是會讓人崩潰。當認真地嘗試重現結論時,就會提高更早發現有問題文獻的機率,也可以有自己的小小黑名單(誰的文章完全不可信,誰的文章會錯但是以有趣的角度犯錯…),更有效率的過濾哪些是有用的資訊。

回到如何開始科學研究