在星光中讀取生命的指紋
當一顆系外行星從其宿主星前方經過(凌日,transit)時,恆星光線會穿過行星的大氣層頂層——在那個瞬間,星光被大氣中的分子選擇性地吸收,在光譜上留下特徵性的吸收線。這就是透射光譜學(Transmission Spectroscopy)的基本原理,也是人類迄今為止唯一可以探查系外行星大氣成分的遙測手段。當我們在數十乃至數百光年外的星光中辨認出氧氣(O₂)、臭氧(O₃)、甲烷(CH₄)和水蒸氣(H₂O)的光譜指紋時,我們正在進行現代科學中最接近奇蹟的行為——尋找地球之外的生命。
然而,生物印記的辨識遠非「檢測到氧氣就等於發現生命」這樣簡單。行星大氣是一個複雜的光化學系統——火山活動可以產生甲烷、水蒸氣的光解可以產生氧氣、而臭氧則需要同時具備氧分子與紫外線輻射。真實的生物印記必須是一組化學不平衡態的集合:例如氧氣與甲烷在大氣中共存——從熱力學角度看,這對分子應該迅速反應為二氧化碳與水,它們的持續共存意味著有一個源源不絕的補充機制,而生物活動是最有力的候選。
JWST:改寫規則的下一代觀測平臺
詹姆斯·韋伯太空望遠鏡(JWST)是系外行星大氣研究的轉折點。其6.5米口徑、低於50 K的低溫運行環境、以及0.6至28.5微米的紅外線波段覆蓋,使其靈敏度比哈勃望遠鏡高出兩個數量級。JWST上的NIRSpec與MIRI儀器可以在一次凌日觀測中同時獲取數百個光譜通道的透射光譜,而過去使用哈勃望遠鏡需要累積多次凌日事件才能達到類似的訊噪比。
2023年至今,JWST已回傳了多顆小型岩石行星——包括TRAPPIST-1系統中的幾顆候選行星——的透射光譜。初步結果揭示了這些行星大氣中二氧化碳與水蒸氣的存在跡象,但也引發了新的困惑:部分光譜並不符合單純的原始大氣模型,可能暗示著岩漿海洋、光化學煙霾或未被預料的地質循環。
光譜反演:從吸收線到大氣成分
將透射光譜轉化為大氣成分的過程稱為大氣反演(atmospheric retrieval)。這是一個典型的逆問題:給定觀測光譜y(λ),我們需要求解大氣參數向量θ(包含溫度分布、各分子的體積混合比、雲層覆蓋率等)使得前向模型F(θ)產生的理論光譜與觀測值在誤差範圍內一致。
由於觀測誤差與模型參數之間的非線性關係,大氣反演通常使用馬可夫鏈蒙地卡羅(MCMC)或嵌套取樣(Nested Sampling)進行貝氏推斷。對於一顆典型的JWST凌日光譜,反演需要取樣10至20個參數的後驗分佈,計算量大到需要高效能運算叢集支援。
系外行星大氣反演模擬
以下Python程式演示了簡化的系外行星透射光譜模擬與分子指紋辨識。
import numpy as np class TransmissionSpectrumSim: """系外行星透射光譜模擬器: 簡化分子吸收模型""" # 關鍵生物印記分子的吸收峰波長 (μm) 及相對強度 MOLECULES = { 'H2O': {0.94: 0.4, 1.13: 0.3, 1.38: 0.6, 1.87: 0.35, 2.69: 0.25}, 'CH4': {1.66: 0.2, 2.31: 0.28, 3.31: 0.15}, 'CO2': {1.60: 0.15, 2.00: 0.22, 4.30: 0.12}, 'O3': {9.60: 0.18}, } def __init__(self, abundances, wl_range=(0.6, 5.0), R=300): self.abundances = abundances # 各分子體積混合比 self.wl = np.linspace(wl_range[0], wl_range[1], R) def compute_spectrum(self): """計算合成透射光譜 (簡化: Lorentzian吸收線疊加)""" transit_depth = np.ones_like(self.wl) for mol, abundance in self.abundances.items(): if mol in self.MOLECULES: for peak_wl, strength in self.MOLECULES[mol].items(): gamma = 0.01 # Lorentzian半寬 depth = strength * abundance / gamma transit_depth -= depth * gamma**2 / ((self.wl - peak_wl)**2 + gamma**2) return transit_depth + np.random.normal(0, 5e-4, len(self.wl)) def detect_biosignature(self, spectrum, threshold=0.002): """檢測光譜中的潛在生物印記""" detected = [] background = np.median(np.abs(np.diff(spectrum))) for mol, peaks in self.MOLECULES.items(): matches = 0 for peak_wl in peaks: idx = np.argmin(np.abs(self.wl - peak_wl)) local_depth = 1.0 - spectrum[idx] if local_depth > threshold: matches += 1 if matches >= len(peaks) * 0.5: detected.append(mol) return detected sim = TransmissionSpectrumSim({'H2O': 0.02, 'CH4': 0.005, 'CO2': 0.015}) spec = sim.compute_spectrum() detected = sim.detect_biosignature(spec) print(f"偵測到的分子: {detected}")
寂靜的終結還是新的孤獨
未來十年內,JWST、ELT與ARIEL任務將合力產生第一批統計意義上的系外行星大氣樣本。如果在這些資料中發現了無可爭議的生物印記組合——例如氧氣+甲烷+水蒸氣——人類的宇宙觀將被永久改寫。但即使最精密的觀測也只能告訴我們「有什麼分子在那裡」,而無法回答更深刻的問題:「那裡有意識嗎?」這是光譜學的極限,也是科學的謙卑——有些答案必須留在星光之外。