跳轉到

1824 卡諾《論火的動力》#

案發現場#

1824 年的巴黎,蒸汽機已經賺了半個世紀的錢。瓦特改良機、汽船橫渡河流、英國工廠日夜轟鳴——但一個尷尬的事實擺在所有工程師面前:沒有人知道蒸汽機的效率極限在哪裡。英國工程師靠試錯把效率從不足 1% 提升到個位數百分點,可是「還能再提升多少?」——這個問題無人能答。熱素說(caloric)與運動說爭論不休,拉瓦錫的定量化學(見 1789-拉瓦錫定量革命.md)清算過燃燒,卻沒清算過「熱如何變成功」。

本案的「偵探」是一位年僅 28 歲的法國軍官——薩迪·卡諾(Sadi Carnot, 1796–1832),巴黎理工學院畢業、陸軍工程兵。他的父親拉扎爾·卡諾是著名數學家與革命家,留給兒子一身反推問題的數學功夫。而本案的「案發現場」,不是實驗室,而是英國的蒸汽機工廠。

偵查過程#

卡諾的偵查方法在科學史上獨樹一幟:從技術的極限反推理論。他在《論火的動力》(Réflexions sur la puissance motrice du feu)開篇直言:

「蒸汽機的理論問題,比放射學、光學的問題更值得哲學家關注……英國人靠蒸汽機賺取的財富,抵得上整個歐洲的預算。」

他的推理分三步:

第一步:理想化。 卡諾拋開蒸汽機的一切工程細節(鍋爐、活塞、冷凝器),提出一個思想實驗——「卡諾循環」:工作物質(不限於蒸汽)經歷等溫膨脹、絕熱膨脹、等溫壓縮、絕熱壓縮四步,回到初態。這是物理學史上第一個思想實驗式的「理想熱機」。

第二步:邏輯推理(可逆性論證)。 卡諾論證:任何兩台在相同高低溫熱源之間工作的熱機,若其中一台效率更高,我們可以用它反過來驅動另一台當作泵,把熱從低溫送回高溫——而這將使系統回到初態卻淨產生功,違反永動機不可能原理(這正是數百年試錯積累出的一條「從未違反的禁令」)。因此結論必然是:所有在相同兩溫度間工作的可逆熱機,效率相同,且與工作物質無關。

第三步:得出極限公式。 卡諾寫出(用現代記號):

\[ \eta_{\text{Carnot}} = 1 - \frac{T_C}{T_H} \]

效率只取決於高溫熱源與低溫熱源的溫度差,與用蒸汽、酒精還是空氣無關。這個公式回答了工程師問不出的問題:想提高效率,唯一的路是提高熱源溫度、壓低排熱溫度——後來的高壓蒸汽機、內燃機、燃氣輪機,全部沿著這條路走。

耐人尋味的是,卡諾在推理中仍使用熱素說的語言(把熱想像成如水從高處流向低處做功),但他的結論卻隱含著熱的運動說——四十年後克勞修斯與開爾文重新詮釋時才發現,卡諾的邏輯在「熱即運動」之下依然成立(見 1850-克勞修斯第二定律.md)。可惜卡諾本人 1832 年死於霍亂,年僅 36 歲,幾乎無人知道他的論文。

結案報告#

卡諾的《論火的動力》是從技術反推理論的典範:熱力學不是從哲學思辨誕生,而是從「蒸汽機能賺多少錢、極限在哪」這個工程問題倒逼出來的。用金觀濤的框架說,本案屬於技術→理論環節:

  1. 理論的下限被確定——卡諾效率成為一切熱機的「天花板」,工程師第一次知道試錯的邊界。
  2. 第二定律的種子——卡諾的可逆性論證,經克勞修斯之手發展成熵的概念(1850-克勞修斯第二定律.md),經焦耳的測量補上熱功當量(1846-焦耳熱功當量.md),熱力學兩大定律合流。
  3. 迴路閉合的範式——技術(蒸汽機)→理論(卡諾)→技術升級(高壓蒸汽、內燃機如 1876-奧托四衝程.md)——這正是「雙迴路大加速」中熱這條線的完整循環。
  4. 方法論的教訓——重大理論突破不一定來自實驗室,也可能來自對既有技術的深刻反思。

證據與工具#

# 卡諾效率:只取決於兩個熱源的溫度
def carno_efficiency(T_hot, T_cold):
    # 溫度用絕對溫標(K)
    return 1 - T_cold / T_hot

print("--- 卡諾效率極限 ---")
cases = [
    ("瓦特低壓蒸汽機(約 100°C→30°C)", 373, 303),
    ("高壓蒸汽機(約 200°C→30°C)", 473, 303),
    ("現代火電廠(約 550°C→25°C)", 823, 298),
]
for name, Th, Tc in cases:
    print(f"{name}: η = {carno_efficiency(Th, Tc)*100:.1f}%")

print("\n結論:提高熱源溫度 = 唯一的效率提升路;")
print("      這解釋了為何蒸汽機越走越高壓、內燃機越走越壓縮比。")

# 卡諾循環四步(示意)
print("\n--- 卡諾循環四步 ---")
for step in ["①等溫膨脹:從高溫熱源吸熱 QH",
             "②絕熱膨脹:溫度降至 TC",
             "③等溫壓縮:向低溫熱源排熱 QC",
             "④絕熱壓縮:溫度回升至 TH,回到初態"]:
    print(step)