← 回部落格 learning-strategy

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

威威 Willy · 2026-06-23

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

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

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

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

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


現在簡單式:一個常數函數

$S + V(s/es) + O$

這是英文最基本的句型,也是最像數學的。

怎麼理解?現在簡單式描述的是常態——恆常為真的事、習慣、事實。

在數學裡,描述常態的是什麼?常數函數。

$f(x) = c$

不管你輸入什麼 $x$,輸出都是 $c$。不變。

Water boils at 100°C.

這句話的邏輯是:不管什麼時候、什麼地點(標準大氣壓下),水的沸點都是 100°C。這就是常數函數。

再看:

She speaks three languages.

主詞 She → 動詞 speaks(加了 s,因為第三人稱單數)→ 受詞 three languages。

注意那個 $s/es$。這是一個運算子(operator)。當主詞是第三人稱單數(he/she/it),動詞要加 $s$ 或 $es$。這跟數學裡「當條件滿足時,套用某個運算」是一樣的。

用數學表達:

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

看到了嗎?這就是一個條件函數。如果你能在腦中建立這個條件判斷,你就不會再忘記第三人稱單數要加 $s$。

易錯點:否定句和疑問句

否定:$S + \text{do/does} + \text{not} + V_{\text{原形}} + O$

疑問:$\text{Do/Does} + S + V_{\text{原形}} + O?$

這裡有一個關鍵邏輯:一旦出現了 do/does 這個「助動詞運算子」,主要動詞就退回原形

這在數學上叫什麼?歸零。 或者更精確地說,這是一個「運算子吸收了變形功能」的規則。does 本身已經帶了第三人稱單數的資訊,所以 speaks 不需要再加 $s$,退回 speak。

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

很多學生在這裡犯錯,寫成 "Does she speaks?"——就是因為他們沒有理解這個「運算子吸收」的邏輯。數學上,這就像你已經有了一個常數,不需要再乘一次。


過去簡單式:一個位移運算子

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

過去簡單式描述的是過去某個時間點發生的事。在數學裡,對應的概念是位移(translation)。

你有一個函數 $f(x)$,把它往左或右平移,變成 $f(x - a)$。結構不變,只是位置移了。

動詞的過去式也一樣。speak → spoke, go → went, eat → ate。規則動詞加 $ed$,不規則動詞有自己的一套對應表,但邏輯相同——你是在把這個動作從「現在」位移到「過去」。

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

規則動詞的 shift 就是 $ed$。不規則動詞的 shift 是一張映射表:

原形 過去式 過去分詞
go went gone
eat ate eaten
speak spoke spoken
write wrote written
take took taken

這張表在數學上就是一個函數映射。你不需要死背整張表(雖然有些人確實需要),你可以用邏輯去理解:這些動詞的變化遵循一些模式,比如 write/wrote/written 和 ride/rode/ridden 是同一個模式。

找到模式,就找到規律。找到規律,就不用死背。

否定和疑問

否定:$S + \text{did} + \text{not} + V_{\text{原形}} + O$

疑問:$\text{Did} + S + V_{\text{原形}} + O?$

跟現在式一樣的邏輯:did 作為助動詞,已經帶了過去式的資訊,所以主要動詞退回原形。

$\text{did} \text{ 吸收了 } V \text{ 的位移運算}$


未來式:一個預測函數

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

未來式描述的是尚未發生的事。數學上,這對應的是預測模型條件推論

will 這個字,本質上是一個運算子,它把時間軸從「現在」推到「未來」。

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

但 will 的使用有條件。它通常用在:

  • 預測(I think it will rain.)
  • 即時決定(I will help you.)
  • 承諾(I will always love you.)

而 be going to 用在:

  • 已經計劃好的事(I am going to visit Japan next month.)
  • 根據現在證據的預測(Look at the clouds. It is going to rain.)

這兩者的區別在數學上是什麼?will 是外推(extrapolation),根據一般規律預測。be going to 是內推(interpolation),根據現有數據預測。

這是我在 Amazon 學到的。資料科學裡,外推和內推是完全不同的操作,可靠度也不一樣。英文裡也一樣:be going to 的「確定感」通常比 will 強,因為它有更多當下的證據支持。


現在完成式:累積總和

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

這是我最喜歡的一個類比。

現在完成式描述的是從過去某點到現在的累積經驗。在數學裡,對應的是什麼?

累加。

$\sum_{i=1}^{n} a_i$

你把從過去到現在的所有「經驗」加起來,得到一個總和。

I have visited 15 countries.

這句話的意思是:從我出生到現在,我總共去過 15 個國家。這是一個累積值。

She has read three books this month.

從這個月開始到現在,她讀了三本書。又是一個累加。

現在完成式的關鍵特徵:

  1. 連接到現在——結果或經驗影響到現在
  2. 不指定確切時間——你不會說 "I have visited 15 countries last year"
  3. 可以持續——for, since 表示從某時到現在

用數學表達:

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

這就是為什麼現在完成式不能跟確切的過去時間一起用。你不會說 "I have visited Japan in 2019." 因為 in 2019 是一個特定時間點,不是累積區間。累加需要一個範圍,不是一個點。


現在完成進行式:累積 + 持續

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

這個時態是現在完成式的「加強版」。它加上了「持續進行」的意味。

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

數學上,如果現在完成式是離散累加($\sum$),那現在完成進行式就是連續積分($\int$)。

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

I have been studying for three hours.

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

It has been raining since morning.

從早上到現在,雨一直在下。連續的。

這就是為什麼你用完成式和完成進行式的感覺不同。"I have read the book"(我讀完了,結果導向)vs "I have been reading the book"(我一直在讀,過程導向)。前者是 $\sum$,後者是 $\int$。


條件句:邏輯蘊含

條件句(If 子句)是英文文法中最像數學的部分,因為它就是邏輯蘊含

第一條件句(真實條件)

$\text{If } P, \text{ then } Q.$

$P \Rightarrow Q$

If it rains, I will stay home.

$P$ = it rains(可能發生) $Q$ = I will stay home(結果)

這跟數學的「若 P 則 Q」一模一樣。

第二條件句(假設現在/未來)

$\text{If } P_{\text{past}}, \text{ would } Q_{\text{base}}.$

If I were rich, I would travel the world.

$P$ = I were rich(與現在事實相反,我不是有錢人) $Q$ = I would travel(假設的結果)

在邏輯上,這是反事實條件句(counterfactual)。$P$ 為假,但我們在探討「如果 $P$ 為真,$Q$ 會怎樣」。

$P = \text{False}, \quad \text{but we reason: } P \Rightarrow Q$

注意:這裡動詞退回到過去式(If I were...),不是因為真的是過去,而是過去式在這裡的功能是「標記假設」。這是英文的一個特殊用法,但在邏輯上完全合理——用時間的位移來表達與現實的距離。

第三條件句(假設過去)

$\text{If } P_{\text{past perfect}}, \text{ would have } Q_{\text{pp}}.$

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

$P$ = I had studied harder(過去事實:沒有更努力) $Q$ = I would have passed(過去的假設結果)

這是過去的反事實。數學上:

$P_{\text{past}} = \text{False}, \quad \text{we infer: } P_{\text{past}} \Rightarrow Q_{\text{past}}$

條件句的精髓在於:動詞的「時態後退」是用來標記與現實的距離。 距離現在越遠,動詞就退得越遠。

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

這是一個有規律的系統,不是一堆隨機的規則。


被動語態:方程式的反轉

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

被動語態在數學上是什麼?逆函數方程式反轉。

主動句:Tom ate the cake.

把受詞和主詞對調,動詞變成 be + 過去分詞:

被動句:The cake was eaten by Tom.

數學上:

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

但被動語態有一個很重要的數學特性:不是所有函數都有逆函數。

同樣,不是所有句子都適合變被動。只有及物動詞(有受詞的動詞)才能變被動。

"He sleeps." → 不能變被動,因為 sleeps 沒有受詞。 "She loves him." → 可以變被動:"He is loved by her."

這就像判斷一個函數是否可逆。如果函數是多對一的(多個 $x$ 映射到同一個 $y$),那它就沒有唯一的逆函數。有些動詞的受詞身份模糊,變被動後語意不清——這就是「不可逆」的情況。


形容詞和副詞:修飾函數的函數

到目前為止我們講的都是句子結構。現在來講修飾語。

形容詞修飾名詞,副詞修飾動詞、形容詞或其他副詞。

在數學裡,這是什麼?函數的組合。

如果 $f(x) = \text{tall}(x)$,$g(x) = \text{person}(x)$,那:

$f(g(x)) = \text{tall person}$

a tall person

這就是函數組合。形容詞包在名詞外面,就像函數的嵌套。

副詞呢?

He runs quickly.

$\text{quickly}(\text{runs})$ — 副詞修飾動詞,改變了動詞的「性質」。

She is very beautiful.

$\text{very}(\text{beautiful})$ — 副詞修飾形容詞,加強了形容詞的程度。

$\text{very}(f(x)) = \text{更高的程度}$

這在數學裡很常見。比如 $2f(x)$ 就是把函數值放大兩倍。very beautiful 就是把 beautiful 的程度放大。


決策樹:什麼時候用什麼時態

很多學生的困擾不是不知道個別時態,而是不知道什麼時候用哪個

這在數學上對應的是決策樹(decision tree)或流程圖

讓我畫一個簡化的決策樹:

這個動作...
├── 現在正在發生? → 現在進行式 (S + am/is/are + V-ing)
├── 是常態/事實? → 現在簡單式 (S + V(s/es))
├── 過去發生且已結束? → 過去簡單式 (S + V-ed)
├── 從過去到現在的累積? → 現在完成式 (S + have/has + V-pp)
│   └── 且還在持續? → 現在完成進行式 (S + have/has + been + V-ing)
├── 未來會發生?
│   ├── 已計劃? → be going to + V
│   └── 預測/即時決定? → will + V
└── 過去的過去? → 過去完成式 (S + had + V-pp)

你不需要一次記住所有時態。你只需要記住這個決策樹的結構。每次造句的時候,問自己幾個問題,按照樹的分支走,就會到正確的時態。

這跟解數學題的思路一樣:你不是在「猜」答案,你是在「推導」答案。


10 個文法規則的數學公式速查表

最後,把整篇文章的核心整理成速查表:

1. 現在簡單式

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

2. 過去簡單式

$S + V\text{-}ed + O \quad \text{(位移運算子)}$

3. 未來式

$S + \text{will} + V + O \quad \text{(預測函數)}$

4. 現在進行式

$S + \text{am/is/are} + V\text{-}ing + O \quad \text{(即時取樣)}$

5. 現在完成式

$S + \text{have/has} + V\text{-}pp + O \quad \text{(累積總和 } \sum \text{)}$

6. 現在完成進行式

$S + \text{have/has} + \text{been} + V\text{-}ing + O \quad \text{(連續積分 } \int \text{)}$

7. 過去完成式

$S + \text{had} + V\text{-}pp + O \quad \text{(過去的累積)}$

8. 被動語態

$O + \text{be} + V\text{-}pp + \text{by } S \quad \text{(方程式反轉)}$

9. 第一條件句

$\text{If } S + V_{\text{現在}}, S + \text{will} + V \quad (P \Rightarrow Q)$

10. 虛擬語氣

$\text{If } S + V_{\text{過去}}, S + \text{would} + V \quad (\neg P \Rightarrow \neg Q)$


練習:把這 10 個公式變成你的

光看公式沒有用。你要自己練習。

練習方式:

  1. 每個公式造 3 個句子
  2. 造完之後,用「決策樹」檢查你選的時態對不對
  3. 把錯的句子標記起來,隔天再練一次

這跟練數學一樣。你不會只看一道例題就會做了。你要自己算,算錯了才知道哪裡沒搞懂。


結語:文法不是敵人

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

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

就像數學一樣。

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

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


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

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