← 回部落格 learning-strategy

用數學公式記英文文法:把規則變成方程式

威威 Willy · 2026-06-23

文法規則太多記不住?把它們變成數學公式就不會忘。

這不是噱頭。我試過很多年,帶過幾百個學生,那些用數學思維理解文法的人,忘記的機率遠低於死背的人。原因是什麼?死背靠記憶,理解靠邏輯。記憶會衰退,邏輯不會。

我以前在德國慕尼黑工大(TUM)讀數學的時候,教授講過一句話:「如果你不能用一個公式表達一個規則,代表你沒有真正理解它。」後來我把這個想法搬到英文文法上——如果一個文法規則不能用類似公式的方式表達,那它可能只是一堆需要死背的例外。

但好消息是,大部分核心文法規則,真的可以用公式表達。


SVO 公式:英文最基礎的方程式

英文句子的核心是「主詞+動詞+受詞」。我們把它寫成:

$S + V + O$

S 是 Subject(主詞,做動作的人或物),V 是 Verb(動詞,描述動作),O 是 Object(受詞,動作的對象)。

這個公式可以套換。當你換掉 S、V、O 三個位置上的詞,意思就改變,但句子的「骨架」不變:

  • $S$ = I, $V$ = eat, $O$ = apples → I eat apples.
  • $S$ = She, $V$ = reads, $O$ = books → She reads books.
  • $S$ = They, $V$ = play, $O$ = soccer → They play soccer.

這就是公式的威力:骨架不動,內容可換。你學會一個句型,就能造出無數個句子。


時態是什麼?一個時間變數

英文的時態,本質上是一個時間變數。我們把它寫成:

$V(t) \quad \text{其中} \quad t \in {\text{past, present, future}}$

$t$ 是時間,$V$ 是動詞。給不同的 $t$,動詞就會變形:

  • $t = \text{present}$ → $V(s/es)$(第三人稱加 s)
  • $t = \text{past}$ → $V\text{-}ed$ 或不規則變化
  • $t = \text{future}$ → will + $V_{\text{原形}}$

這樣看,時態就不是 16 種要死背的組合,而是一個「帶時間參數的函數」。你要做的只是選對 $t$,動詞自動跟著變。


10 個文法規則的公式

1. 現在簡單式:常數函數

$S + V(s/es) + O \quad \text{(常態)}$

描述恆常為真的事、習慣、事實。對應數學的常數函數 $f(x) = c$。

Water boils at 100°C.

不管什麼時候、什麼地點,水的沸點都是 100°C。

第三人稱單數的 $s/es$ 是一個條件運算子:

$V' = \begin{cases} V + s/es & \text{if } S \in {\text{he, she, it}} \ V & \text{otherwise} \end{cases}$

2. 現在簡單式的否定與疑問

否定:$S + \text{do/does} + \text{not} + V_{\text{原形}} + O$ 疑問:$\text{Do/Does} + S + V_{\text{原形}} + O?$

關鍵:do/does 出現後,主要動詞退回原形。為什麼?因為 does 已經帶了第三人稱單數的資訊,speaks 不需要再加 $s$。

$\text{Does} + S_{\text{3rd}} + V_{\text{原形}} \quad \text{(does 吸收了 } V \text{ 的變形)}$

很多學生寫成 "Does she speaks?"——就是因為沒理解這個「運算子吸收」的邏輯。

3. 過去簡單式:位移運算子

$S + V\text{-}ed + O$

過去式把動作從「現在」位移到「過去」。規則動詞加 $ed$,不規則動詞有自己的映射表。

$V_{\text{past}} = V + \text{shift}_{\text{past}}$

否定和疑問:did 出現後,動詞退回原形(did 已經吸收了過去式的位移運算)。

4. 未來式:will 是預測運算子

$S + \text{will} + V_{\text{原形}} + O$

$T_{\text{future}} = T_{\text{now}} + \text{will}$

will 是外推(extrapolation),根據一般規律預測。be going to 是內推(interpolation),根據現有證據預測。兩者的確定感不同。

5. 情態動詞 + V:模組組合

情態動詞(can, could, may, might, must, should, would)加上原形動詞,是英文裡很常見的組合:

$\text{modal} + V_{\text{原形}} = \text{情態表達}$

例子:

  • can + go → can go(能力)
  • must + study → must study(必要)
  • should + rest → should rest(建議)

當 modal 是過去式形態(如 could, would, might),表達就變得更「不確定」或「更禮貌」:

  • could + go → could go(過去能力/委婉)
  • would + go → would go(意願/假設)
  • might + go → might go(可能性較低)

數學上,這就像給函數加上一個「模組參數」:

$V_{\text{modal}} = \text{modal}(V)$

modal 是一個修飾運算子,改變了 $V$ 的語氣,但不改變 $V$ 的時態。

6. 情態動詞 + have + 過去分詞:對過去的推測

$\text{modal} + \text{have} + V\text{-}pp$

這個結構用在「對過去事情的推測或遺憾」:

  • would have + gone → would have gone(過去的假設結果)
  • should have + studied → should have studied(過去應該做但沒做)
  • could have + won → could have won(過去有能力但沒做到)
  • must have + left → must have left(過去一定發生了)

$V_{\text{modal-past}} = \text{modal}(\text{have} + V\text{-}pp)$

這是「模組組合」加上「時間位移」的雙重運算。理解了 5 和 6,你就掌握了情態動詞的核心用法。

7. 現在完成式:累積總和

$S + \text{have/has} + V\text{-}pp + O$

$\text{experience} = \sum_{t=t_{\text{start}}}^{t_{\text{now}}} \text{events}(t)$

I have visited 15 countries.

從我出生到現在,總共去過 15 個國家。這是累積值。

關鍵限制:不能跟確切的過去時間一起用。"I have visited Japan in 2019." 是錯的,因為 in 2019 是一個時間點,不是累積區間。

8. 現在完成進行式:連續積分

$S + \text{have/has} + \text{been} + V\text{-}ing + O$

$\int_{t_{\text{start}}}^{t_{\text{now}}} \text{activity}(t) , dt$

I have been studying for three hours.

不是在一個時間點做了「學習」,而是從三小時前到現在持續不斷地學習。連續的過程。

對比:"I have read the book"($\sum$,結果導向)vs "I have been reading the book"($\int$,過程導向)。

9. 被動語態:方程式反轉

$\text{主動:} S + V + O$ $\text{被動:} O + \text{be} + V\text{-}pp + \text{by } S$

$f(x) = y \quad \Leftrightarrow \quad f^{-1}(y) = x$

不是所有函數都可逆。同樣,只有及物動詞(有受詞)才能變被動。"He sleeps." 不能變被動。

10. 條件句:邏輯蘊含

英文的條件句,就是數學裡的「若 P 則 Q」。

第一條件句(真實): $P \Rightarrow Q$

If it rains, I will stay home.

第二條件句(假設現在): $\neg P \Rightarrow Q_{\text{hypothetical}}$

If I were rich, I would travel the world.

第三條件句(假設過去): $\neg P_{\text{past}} \Rightarrow Q_{\text{past hypothetical}}$

If I had studied harder, I would have passed the exam.

動詞的「時態後退」用來標記與現實的距離。距離現在越遠,動詞就退得越遠。

條件 與現實距離 動詞變化
第一條件 現在式 + will
第二條件 過去式 + would
第三條件 過去完成式 + would have

練習:把句子變公式,再變回來

光看公式沒用,要自己動手。試著把以下 5 句變成公式,再從公式變回句子。

  1. "She has read three books this month." → 公式:$S + \text{has} + V\text{-}pp + O$(現在完成式) → 套換:$S$ = He, $V$ = written, $O$ = two emails → "He has written two emails this month."

  2. "If I had known, I would have called you." → 公式:$\neg P_{\text{past}} \Rightarrow Q_{\text{past}}$(第三條件句) → 套換:$P$ = she had arrived earlier, $Q$ = she would have caught the train → "If she had arrived earlier, she would have caught the train."

  3. "They are playing soccer now." → 公式:$S + \text{are} + V\text{-}ing + O$(現在進行式) → 套換:$S$ = The children, $V$ = eating, $O$ = lunch → "The children are eating lunch now."

  4. "You should study harder." → 公式:$S + \text{modal} + V_{\text{原形}}$(情態) → 套換:$S$ = We, modal = must, $V$ = leave → "We must leave."

  5. "The cake was eaten by Tom." → 公式:$O + \text{was} + V\text{-}pp + \text{by } S$(被動) → 套換:$S$ = Maria, $V$ = painted, $O$ = the wall → "The wall was painted by Maria."

練習方式:每個公式造 3 個句子,造完用「決策樹」檢查時態對不對,錯的標起來隔天再練。


文化側記:TUM 的數學課

我在 TUM 讀數學的時候,每堂課幾乎都在做符號操作。教授寫一個定義,學生推導性質,性質再變成定理,定理又可以套到下一個問題。整堂課下來,黑板上的符號像活的東西一樣變來變去。

文法也是一樣。你學 SVO 是定義,學第三人稱單數的 $s/es$ 是性質,學 do/does 吸收變形是定理,學被動語態是套用。一層一層疊上去,每一層都是上一層的延伸。

我後來覺得,語言和數學的相似性比大多數人想的還高。差別只在於:數學的符號是人為定義的($+$ 號就是加法),語言的符號是歷史演變來的(為什麼第三人稱單數要加 $s$,其實沒什麼道理)。但學會之後,兩者都可以用「公式思維」來掌握。


結語:文法不是敵人

很多學生把文法當成英文最大的敵人。規則多、例外多、記不住。

但如果你換一個角度——把文法當成一個有結構的邏輯系統——它就不再是一堆隨機的規則,而是一套可以推導、可以理解、可以用公式表達的體系。

就像數學一樣。

你不需要記住每一種情況。你需要理解底層的邏輯。理解了邏輯,你遇到任何句子都能自己推導出正確的文法。

這才是真正的「學會」文法,而不是「背會」文法。


拆解一個複雜句:公式樹範例

光看單句的公式還不夠。真正的句子常常是公式套公式,像樹狀結構一樣展開。拿這句來試:

The students who have been studying for the exam will have finished by tomorrow.

拆開來看,它其實是兩個子句疊在一起:

  • 主幹(未來完成式):$S + \text{will have} + V\text{-}pp$
  • 修飾主詞的關係子句(現在完成進行式):$\text{who} + \text{have been} + V\text{-}ing$

合在一起:

$[\underbrace{S_{\text{rel}}}{\text{who have been studying...}}] + \underbrace{\text{will have}}{\text{future perfect}} + \underbrace{V\text{-}pp}{\text{finished}} + \underbrace{\text{by tomorrow}}{\text{時間界}}$

如果用樹狀畫出來:

                    S = The students
                          |
                +---------+---------+
                |                   |
        [who have been         will have finished
         studying for           by tomorrow
         the exam]
                |
          關係子句(修飾 S)

學會這樣拆,你看到長句子就不會慌。先找主幹(誰做了什麼),再看修飾語(誰、誰的、用什麼、什麼時候)。一棵一棵往下拆,最後再合回去念一遍,順一次。

為什麼有人害怕公式?

不是每個人都對公式有好感。我教過一個三十多歲的會計師,她第一次看到 $V(t)$ 的寫法時直接說:「看到符號就頭暈。」

後來聊開了才發現,她高中數學被當過,從此對任何「看起來像數學」的東西都過敏。英文文法本來跟數學無關,套上公式符號反而觸發她的抗拒。

這是一個真實的學習心理:曾經在某個領域受過挫,那個領域的「外觀」會自動讓你警覺。符號、公式、$f(x)$——對某些人是啟發,對另一些人是壓力。

怎麼辦?我自己的做法是:讓公式變得「不像公式」。

具體一點:

  1. 用白話寫註解。$V(t)$ 旁邊寫「動詞帶時間參數」,不是只放符號。
  2. 把符號換成中文位置。$S$ 就是「主詞那個空位」,$V$ 就是「動詞那個空位」。
  3. 先用填空題過渡。「我 ______(吃)蘋果。」寫對了,再改成公式。
  4. 接受跳過。看完本文記住 SVO 就夠了,條件句的符號可以略過——重點是邏輯,不是符號本身。

公式只是工具。工具不對就用別的。能幫你記住的,就是好工具。

五題練習:中文到公式,再翻英文

試著自己寫寫看。先寫公式,再寫英文句子。

  1. 中文:「她昨天已經完成作業了。」 → 公式提示:$S + V\text{-}ed + O$(過去簡單式,已經 = 強調完成) → 英文:She finished her homework yesterday.

  2. 中文:「我們正在等公車。」 → 公式提示:$S + \text{are} + V\text{-}ing + O$ → 英文:We are waiting for the bus.

  3. 中文:「如果你早點出門,就不會遲到了。」 → 公式提示:$\neg P_{\text{past}} \Rightarrow Q_{\text{past}}$(第三條件句) → 英文:If you had left earlier, you would not have been late.

  4. 中文:「這個蛋糕是我媽媽烤的。」 → 公式提示:$O + \text{be} + V\text{-}pp + \text{by } S$(被動) → 英文:This cake was baked by my mother.

  5. 中文:「他應該已經到了吧。」 → 公式提示:$\text{modal} + \text{have} + V\text{-}pp$(對過去的推測) → 英文:He should have arrived already.

寫完對答案。第 3 題和第 5 題表面都是「過去的假設」,但公式不同:第 3 題是條件句(兩個子句),第 5 題是情態推測(單句內部)。混用的話意思會跑掉。

時態一覽:3×4 矩陣

把時態整理成一張時間 × 體(aspect)的矩陣,看起來更清楚:

簡單(Simple) 進行(Continuous) 完成(Perfect) 完成進行(Perfect Continuous)
過去 $V\text{-}ed$
I ate.
was/were + $V\text{-}ing$
I was eating.
had + $V\text{-}pp$
I had eaten.
had been + $V\text{-}ing$
I had been eating.
現在 $V(s/es)$
I eat.
am/is/are + $V\text{-}ing$
I am eating.
have/has + $V\text{-}pp$
I have eaten.
have/has been + $V\text{-}ing$
I have been eating.
未來 will + $V$
I will eat.
will be + $V\text{-}ing$
I will be eating.
will have + $V\text{-}pp$
I will have eaten.
will have been + $V\text{-}ing$
I will have been eating.

這張表有幾個觀察:

  • 行是時間,列是體的「深度」。左邊是表層(單點動作),越往右越深(累積、持續)。
  • 矩陣常被說成 16 格,其實英文時態的核心組合是 $3 \times 4 = 12$ 種。被動、情態那幾格另外算。
  • 你不需要背 12 種。你只需要知道每個軸怎麼走:時間往過去退($\text{shift}_{\text{past}}$),體往完成加($\text{have} + V\text{-}pp$),體往進行加($\text{be} + V\text{-}ing$)。三個軸自由組合。

把這張表印出來貼在牆上,每天看三十秒,一週後你就會發現——不再「查」時態,而是「讀」時態。

文化側記:程式語言早就學會了

我在 Amazon 做資料科學的時候,每天都在寫正則表達式(regex)。regex 的本質,就是用符號表達「模式」:

^\d{3}-\d{4}$    // 匹配 123-4567 這種電話號碼

這跟英文文法的「公式」是同一件事。\d 是「任意數字」這個抽象,量詞 {3} 是「出現三次」這個約束。整個 regex 是一條公式,描述「什麼樣的字串算合法」。

廣一點看:

  • 邏輯學的 $\forall x , P(x)$ 跟英文的 "All $x$ are $P
    quot; 是同一件事。
  • SQL 的 SELECT ... FROM ... WHERE ... 跟英文的 SVO 結構幾乎一一對應。
  • 程式語言的 if ... then ... else 就是英文的第一/第二條件句。

語言學家其實早就知道——喬姆斯基在 1950 年代就主張「語言是有限規則生成無限句子」,這跟數學的「有限公理生成無限定理」是同一個想法。只是大多數英文課本不從這個角度切入,所以學生看不到那條線。

寫過程式的人,文法公式會特別自然。沒寫過也沒關係——邏輯是通用的,符號只是載體。

上課實錄:那天我教一個 50 歲的阿姨學公式

她來上課的時候,已經學英文學了二十年,看得懂簡單文章,但一開口就卡。問題不是單字量,是她對時態沒有「感覺」——每次要說話都得在腦中「查表」:現在完成式是 have 還是 has?ed 要不要加?過去式還是不規則?

我沒讓她背公式表。我畫了一張圖:

時間軸:──── past ──── now ──── future
                  ↑
              你站在哪?

然後告訴她:先決定「我要說的是過去、現在、還是未來」,再決定「這件事是一次、還是重複、還是持續到現在」。兩個決定做完,句型就出來了。

第一週她覺得慢,畢竟「查表」二十年,突然換成「算」會不適應。第二週開始加速。第三週她自己發現:原來很多句子不用查,只要回答那兩個問題。

她後來跟我說:「我以前覺得英文是背誦,現在覺得英文是邏輯。」

我聽了比她考高分還開心。

那一刻我確定一件事:把公式寫成符號不是重點,把思考方式從「背」轉成「推」,才是真正的學習。


這篇文章是「數學 × 英文」系列的第二篇。下一篇我會分享我從 Amazon 離開回來教書的故事——以及資料科學的思維怎麼改變了我教英文的方式。

威威
威威 Willy
德國數學碩士、前 Amazon 資料科學家。數學是邏輯的語言,英文是世界的窗口。
← 回部落格