用數學公式記英文文法:把規則變成方程式
文法規則太多記不住?把它們變成數學公式就不會忘。
這不是噱頭。我試過很多年,帶過幾百個學生,那些用數學思維理解文法的人,忘記的機率遠低於死背的人。原因是什麼?死背靠記憶,理解靠邏輯。記憶會衰退,邏輯不會。
我以前在德國讀數學的時候,教授講過一句話:「如果你不能用一個公式表達一個規則,代表你沒有真正理解它。」後來我把這個想法搬到英文文法上——如果一個文法規則不能用類似公式的方式表達,那它可能只是一堆需要死背的例外。
但好消息是,大部分核心文法規則,真的可以用公式表達。
現在簡單式:一個常數函數
$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.
從這個月開始到現在,她讀了三本書。又是一個累加。
現在完成式的關鍵特徵:
- 連接到現在——結果或經驗影響到現在
- 不指定確切時間——你不會說 "I have visited 15 countries last year"
- 可以持續——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 個公式變成你的
光看公式沒有用。你要自己練習。
練習方式:
- 每個公式造 3 個句子
- 造完之後,用「決策樹」檢查你選的時態對不對
- 把錯的句子標記起來,隔天再練一次
這跟練數學一樣。你不會只看一道例題就會做了。你要自己算,算錯了才知道哪裡沒搞懂。
結語:文法不是敵人
很多學生把文法當成英文最大的敵人。規則多、例外多、記不住。
但如果你換一個角度——把文法當成一個有結構的邏輯系統——它就不再是一堆隨機的規則,而是一套可以推導、可以理解、可以用公式表達的體系。
就像數學一樣。
你不需要記住每一種情況。你需要理解底層的邏輯。理解了邏輯,你遇到任何句子都能自己推導出正確的文法。
這才是真正的「學會」文法,而不是「背會」文法。
這篇文章是「數學 × 英文」系列的第二篇。上一篇講的是數學思維如何幫助英文學習,下一篇我會分享我從 Amazon 離開回來教書的故事——以及資料科學的思維怎麼改變了我教英文的方式。