跳轉到

1600 吉爾伯特磁學#

案發現場#

1600 年,英格蘭伊莉莎白一世的御醫威廉·吉爾伯特(William Gilbert, 1544–1603)出版《論磁》(De Magnete)——六卷、用拉丁文寫成、匯集了十七年實驗。這是第一本完全以實驗為基礎、系統研究某一自然現象的著作。

案發現場的知識處境:磁石(天然磁鐵礦)自古已知,羅盤已用於航海四百年(見 1492-哥倫布與航海革命.md),但磁的本質無人知曉。流行的「解釋」荒誕不經:磁針被北極的巨大磁山吸引、被天極的星光牽引、甚至靠「同情」(sympathy)感應。航海業迫切需要知道:磁偏角(磁北偏離真北)為何隨地點變化?能否用它測經度?

謎團:對一個看不見、摸不著的力,如何建立可靠的知識?

偵查過程#

吉爾伯特的方法是全新的——不引權威、只做實驗。他在扉頁警告讀者:「聰明人若不動手實驗,就不要在這門學科妄下斷語。」他的偵查路徑:

  1. 造一個小地球:吉爾伯特把天然磁石琢磨成球形(他稱之為 terrella,小地球),用小磁針在其表面移動,發現磁針在球面各點的指向,完全模擬羅盤在地球各處的行為——包括磁傾角(dip,磁針下傾)隨緯度變化。結論震撼:地球本身就是一塊大磁石。磁不是「天上的力量」,而是地球的性質。
  2. 拆解磁的作用:他逐一實驗——磁石隔着紙、水、木板仍吸引鐵(力可穿透);加熱會消磁(居里點的經驗發現,早三百年);用鐵包裹的針被屏蔽(磁屏蔽的發現);磁力隨距離減弱(他錯誤地認為正比於距離,反平方定律要到牛頓時代才確立)。
  3. 發現磁傾角隨緯度規則變化:他測量並主張磁傾角可作緯度的指示——雖然後來證明不夠精確,但這是「用物理性質做導航儀」的具體嘗試。
  4. 區分電與磁:他注意到琥珀摩擦吸引碎屑(電)與磁石吸鐵(磁)性質不同——電吸輕物、磁只吸鐵;電靠摩擦、磁是固有。他為前者造了新詞 electricus(琥珀的)——「電」這門學科的名字由此而來。
  5. 掃清地心說以外的迷霧:他主張地球自轉由「磁力」維持(此論錯誤),但他的實驗方法成為典範——伽利略在《對話》中盛讚此書,稱吉爾伯特「值得被銘記」。

結案報告#

《論磁》是「實驗→理論」的第一個完整樣板:

  1. 地球物理學的誕生:「地球是大磁石」是第一個對地球整體性質的科學解釋;磁偏角、磁傾角的地圖由此展開,最終通往地磁場理論與現代板塊構造學的古地磁證據。
  2. 方法論的樣板:吉爾伯特示範了「造模型(terrella)→系統實驗→歸納結論」的完整流程。培根(1620-培根新工具.md)的歸納法宣言雖晚於此書二十年,但吉爾伯特已經在做;伽利略的受控實驗(1638-兩門新科學.md)也與此呼應。實驗第一次成為知識的法庭。
  3. 電學的命名:electricus 一詞孵化了整門電學,最終通往富蘭克林(1752-富蘭克林風箏.md)、伏打(1800-伏打電堆.md)與麥克斯韋(1865-麥克斯韋方程組.md)。
  4. 迴路的意義:航海的技術需求(磁偏角)提出問題→吉爾伯特的實驗給出理論→理論又提出新問題(磁傾角規則嗎?磁力隨距離如何衰減?)→新的實驗與儀器。技術→實驗→理論→實驗——雖然當時尚未完全閉合,但這條鏈第一次自覺地轉動。

證據與工具#

# 用 Python 模擬吉爾伯特 terrella 實驗的核心發現:磁傾角隨緯度變化
# 地球視為均勻磁化球:磁場如同位於球心的磁偶極

import math

def dip_angle(lat_deg):
    """均勻磁化球表面的磁傾角:tan(dip) = 2*tan(lat)"""
    lat = math.radians(lat_deg)
    return math.degrees(math.atan(2 * math.tan(lat)))

print("緯度(°)   磁傾角(°)   (吉爾伯特 terrella 實驗的規律)")
for lat in [0, 20, 40, 60, 90]:
    print(f"  {lat:3d}      {dip_angle(lat):6.1f}")

# 磁偏角(磁北偏離真北)隨地點變化——吉爾伯特以磁極偏離地極解釋
# 設磁北極偏離地理北極經度 10°,緯度 80°,計算倫敦(51.5°N, 0°E)的磁偏角
import math
mag_pole = (80, 10)     # 磁極(緯度, 經度)
obs = (51.5, 0.0)       # 倫敦

def dec_deg(lat1, lon1, lat2, lon2):
    """球面三角近似:觀測點到磁極的方位角與真北的夾角"""
    phi1, lam1 = math.radians(lat1), math.radians(lon1)
    phi2, lam2 = math.radians(lat2), math.radians(lon2)
    y = math.sin(lam2 - lam1) * math.cos(phi2)
    x = (math.cos(phi1)*math.sin(phi2)
         - math.sin(phi1)*math.cos(phi2)*math.cos(lam2 - lam1))
    return math.degrees(math.atan2(y, x))

dec = dec_deg(*obs, *mag_pole)
print(f"\n倫敦磁偏角(模型值)≈ {dec:.1f}°")
print("→ 磁偏角隨經緯度變化 = 地球磁極偏離地極:吉爾伯特的解釋架構。")

# 磁傾角可作緯度指示:由傾角反推緯度
import math
def lat_from_dip(dip_deg):
    return math.degrees(math.atan(math.tan(math.radians(dip_deg)) / 2))

print(f"\n若海上測得磁傾角 60° → 緯度 ≈ {lat_from_dip(60):.1f}°N")
print("(實際地磁不均勻,此法不夠準——但『用物理性質導航』的想法")
print("  正是技術需求倒逼實驗科學的典型案例。)")