標籤:
隨記:我們需要怎樣的數學教育?
註:這篇文章裡有很多個人觀點,帶有極強的主觀色彩。其中一些思想不見得是正確的,有一些話也是我沒有資格說的。我只是想和大家分享一下自己的一些想法。大家記得保留自己的見解。也請大家轉載時保留這段話。
我不是一個數學家。我甚至連數學專業的人都不是。我是一個純粹打醬油的數學愛好者,只是比一般的愛好者更加執著,更加瘋狂罷了。初中、高中一路保送,大學不在數學專業,這讓我可以不以考試為目的地學習自己感興趣的數學知識,讓我對數學有如此濃厚的興趣。從 05 年建立這個 Blog 以來,每看到一個驚人的結論或者美妙的證明,我再忙都會花時間把它記錄下來,生怕自己忘掉。不過,我深知,這些令人拍案叫絕的雕蟲小技其實根本談不上數學之美,數學真正博大精深的思想我恐怕還不曾有半點鐘體會。
我多次跟人說起,我的人生理想就是,希望有一天能學完數學中的各個分支,然後站在一個至高點,俯瞰整個數學領域,真正體會到數學之美。但是,想要實現這一點是很困難的。最大的困難就是缺少一個學習數學的途徑。看課本?這就是我今天想說的——課本極其不靠譜。
這個我深有體會。最近兩年,我一直在做初中數學培訓,有了一些自己的看法。數學教育大致分成三個階段,看山是山看水是水,看山不是山看水不是水,看山是山看水是水。
最早數學教育就是,教你幾個定理,告訴你它們是怎麼證的,再讓你證明一些新的定理。
後來的要求就變了:光學數學不夠,還要用數學。數學教育已經上升了一個層次:大家要把數學用到生活中去,解釋生活中的現象。一時間,課本也好,中考題也好,全是與生活實際緊密聯絡的數學應用題,彷彿放眼望去身邊真的處處都是數學一樣。商場賣貨,書店賣書,農民耕地,工人鋪磚,再一次湧現在了課本、教輔書和考試題裡。其實,數學可以解釋生活,只是我們並不會這樣去做。生活的變數太多,再強大的數學模型也不可能考慮到一切。對於平常人來說,真正能用到數學的地方,也就只有算算帳了。
總有一天,數學教育會拔高到第三層:返樸歸真,數學真正牛 B 的還是它本身。你會發現,那些偉大的數學思想,那些全新的數學理論,最初研究的動機並不是要急於解釋我們身邊的某某詭異現象,而是它本身的美妙。線性代數的出現,很大程度上要歸功於神奇的Cramer 悖論;群論的誕生,也是 Galois 研究多項式的解的結構時的產物;Euler 創立圖論,源於那個沒有任何實用價值的 Königsberg 蛋疼問題;非歐幾何的出現,則完全是由於這個問題本身的魅力。微積分呢?它確實有非常廣泛的實用價值,物理學的各種定義都依賴於微積分;但很可惜,它不是一種具有顛覆性的數學思想。
初一課本講負數時,反覆說負數的實際意義,比如海拔、得分、溫度、收支等等,把負數變成一種真實的存在。其實,這不是人們使用負數的主要動機。負數的價值在於,它可以把減去一個數變成加上一個負數,很多加加減減複雜到甚至需要分類討論的東西都能夠用一個式子統一在一起了。比如說小學的盈虧問題:如果每人分 3 個蘋果還多 8 個,如果每人分 5 個蘋果則還多 2 個,問有多少人多少蘋果?解法是,兩種分法多出來的蘋果相差 6 個,這是每個人多分了兩個蘋果引起的,因此一共 3 個人,從而可以算出有 17 個蘋果。但是,如果把問題改成“每人分 3 個就多 8 個,每人分 5 個就少 2 個”該怎麼辦?上面的公式就變了,8 不能減 2,要加 2 。因此,小學講盈虧問題會分“盈虧”、“盈盈”、“虧虧”三種情況討論。其實,如果把“少 2 個”理解成“多 -2 個”,問題是一模一樣的,之前的公式同樣適用。負數這一新思想立即把三種情況統一在了一起,它們的本質變得一模一樣了。
這是我給初一學生講負數時必講的例子。這才是負數的意義。這才是課本裡應該反覆舉例強調的。
某次看到論壇裡有人問,群論有什麼意思啊?某人回複,群論很有意思啊,只是課本把它寫得沒意思了,比方說,講群論怎麼能不講魔方呢?我不贊同這個回複。數學迷人的地方,不在於它在生活中的應用,而在於它本身的美。為什麼不講 Lagrange 定理?為什麼不講 Sylow 定理?對於我來說,最能吸引我學習一個數學課題的,莫過於一系列非平凡的結論以及它的精彩證明了。
科幻小說《傷心者》的末尾列舉了很多長期以來未得到實際應用的數學理論,不過卻沒有說到一個更為極端的例子。數學中的皇冠——數論——2000 年來一直沒有任何實際應用,是最純粹的數學。直到電腦,尤其是現代密碼學的出現,才讓數論第一次走出數學,走進了人們的生活中。是什麼在支援數論的研究呢?只能是數學本身了。
在我給初中孩子出幾何題時,我都嘗試著給出一般性的問題,求證三角形中兩邊的平均長度大於第三邊上的中線長,求證三角形三條高的倒數和等於內切圓半徑的倒數,等等。即使是純代數問題和解析幾何問題,我也總能編出題目描述簡單並且極具挑戰性的問題。兩數的和與積相等共有多少個整數解?把直線 y=x 沿 y=2x 翻折後得到的直線方程是什嗎?在感受結論之美的同時,他們也會因自己獨立解決了一個真正的數學問題而激動。
然而,這還不算教育的主要問題。某次與一個數學專業的同學聊到 Riemann 假設時,對方說她從沒聽說過 Riemann 假設。我大吃一驚,數學專業的人怎麼可能不知道 Riemann 假設呢?隨即明白,這也是拜數學教育所賜。翻開數學課本,總是成套的理論體系,先定義再證明,說得頭頭是道。可是,這些東西都是怎麼來的呢?在得出這些東西的過程中,數學家們走了哪些彎路呢?課本上隻字不提。課本裡從來都只講什麼是對的,卻從來不講什麼是錯的。數學考試只會讓你證明一個結論,從不會讓你推翻一個結論。
2010 年江蘇高考數學題因為“太難”備受爭議。其中最後一道大題如下:已知 △ABC 的三邊長都是有理數,(1) 求證 cos(A) 是有理數; (2) 求證對任意正整數 n , cos(nA) 是有理數。其實這道題是一個非常漂亮的好題,描述簡單,問題普遍,結論有趣,證明巧妙,中考題就該這麼出。不過我覺得,如果再補上這麼一個小問,這道題就真的完美了:證明或推翻, sin(A) 一定是有理數。當然,問題本身並不難,等邊三角形就是一個最簡單的反例。關鍵在於,推翻一個結論,尋找一個反例,也是數學研究的一個基本能力,而這是中學數學教育中很少重視的。
於是,在教初中數學時,我布置的每道作業題都無一例外地以“證明或推翻”打頭。偶爾,有些題目真的是需要學生們去推翻它。比方說,證明或推翻,周長和面積都相等的兩個三角形全等。不同的人找到的反例不一樣,有的簡單有的複雜,有的深刻有的盲目。再用一整節課的時間逐一講解並點評大家構造的反例,給孩子們帶來的收穫遠比直接講題要大得多。
但是,我還沒有講到數學教育中最主要的問題。前段時間去圖靈的作譯者交流會,期間和劉江老師簡單地聊了幾句。劉江老師提到一個網站叫做 Better Explained 。他說,其實大家沒能理解數學之妙,是因為教的時候沒教好,數學本來可以講得更直觀,更通俗的。
我非常同意劉江老師的說法。舉個例子吧。如果有學生問,質數是什嗎?老師會說,質數就是除了 1 和自身以外,沒有其它約數的數。不對,這不是學生想要的答案。學生真正想知道的是,質數究竟是什麼?其實,質數就是不可再分的數,是組成一切自然數的基本元素。 12 是由兩個 2 和一個 3 組成的,正如 H2O 是由兩個 H 原子和一個 O 原子組成的一樣。只是和化學世界不同,算術世界的元素有無窮多個。算術世界內的一切對象、定理和方法,都是由這些基本元素組成的,這才是質數為什麼那麼重要的原因。
高中學複數時,相信很多人會納悶兒:虛數是什嗎?為什麼要承認虛數?虛數怎麼就表示旋轉了?其實,人們建立複數理論,並不是因為人們有時需要處理根號裡是負數的情況,而是因為下面這個不可抗拒的理由:如果承認虛數,那麼 n 次多項式就會有恰好 n 個根,數系一下子就如同水晶球一般的完美了。但複數並不能形象地反映在數軸上,這不僅是因為實數在數軸上已經完備了,還有另外一個原因:沒有什麼幾何操作連做兩次就能實現取相反數。比如,“乘以 3”就代表數軸上的點離原點的距離擴大到原來的三倍,“3 的平方”,也就是“乘以 3 再乘以 3”,就是把上述操作連做兩次,即擴大到 9 倍。同樣地,“乘以 -1”表示把點翻折到數軸另一側,“-1 的平方”就會把這個點又翻回來。但是,怎麼在數軸上表示“乘以 i ”的操作?換句話說,什麼操作連做兩次能夠把 1 變成 -1 ?一個頗具革命性的創意答案便是,把這個點繞著原點旋轉 90 度。轉 90 度轉兩次,自然就跑到數軸的另一側了。沒錯,這就把數軸擴充到了整個平面,正好解決了複數沒地方表示的問題。於是,複數的乘法可以解釋為縮放加旋轉,複數本身自然也就有了 z = r (cosθ + sinθi) 的表示方式。順著這個道理推下去,一切都順理成章了。複數不但有了幾何解釋,有時還能更便捷地處理幾何問題。
一直對線性代數高度興趣,於是大學選了線性代數這門課,結果收穫幾乎為零。原因很簡單,本來期待著來一次大徹大悟,結果學了一個學期,我還是不知道矩陣究竟是什麼,矩陣乘法為什麼要這麼定義,矩陣可逆又怎麼了,行列式究竟表示什麼。
直到今天看到這個網頁,才看見有人一語道破線性代數的真諦(這也是我終於決定寫成此文的直接原因)。我終於找到了我那一個學期企圖尋找的東西。就好像把 x 變成 2 x 一樣,我們經常需要把 (x, y) 變成 (2 x + y, x – 3 y) 之類的東西,這就叫做線性變換。於是才想到定義矩陣乘法,用於表示一切線性變換。幾何上看,把平面上的每個點 (x, y) 都變到 (2 x + y, x – 3 y) 的位置上去,效果就相當於對這個平面進行了一個“線性拉扯”。
矩陣的乘法,其實就是多個線性變換疊加的效果,它顯然滿足結合律,但不滿足交換律。主對角線全是 1 的矩陣所對應的線性變換其實就是不變的意思,因此它叫做單位矩陣。矩陣 A 乘以矩陣 B 得單位矩陣,就是做完線性變換 A 後再做一次線性變換 B 就又變回去了的意思,難怪我們說矩陣 B 是矩陣 A 的逆矩陣。課本上對行列式的定義千奇百怪,又是什麼遞迴,又是什麼逆序對,還編寫口訣協助大家記憶。其實,行列式的真正定義就一句話:每個單位正方形線上性變換之後的面積。因此,單位矩陣的行列式當然就為 1,某行全為 0 的行列式顯然為 0 (因為某一維度會被無視掉,線性變換會把整個平面壓扁), |A·B| 顯然等於 |A|·|B| 。行列式為 0 ,對應的矩陣當然無法復原,因為這樣的線性變換已經把平面壓成一條線了,什麼都不能把它變回去了。當然,更高階的矩陣就對應了更高維的空間。一瞬間,所有東西都解釋清楚了。
難以置信的是,如此令人興奮的東西,我們所用的課本上竟然一點都沒有說到!那些開篇就講行列式定義的課本,為什麼不先把線性變換下的面積當作行列式的定義,再推匯出行列式的計算方法,再來補充說明“其實從邏輯上說,我們應該先用這個計算公式來定義行列式,然後才說行列式可以用來表示面積”?為了嚴密性而犧牲了可讀性,太不值得了。寫到這裡,我真想立即拾起線性代數課本,用全新的眼光重看所有的定義和定理,然後重新寫一份真正的線性代數教材來。
高數課本同樣荒唐。主流的高數課本都是先講導數,再講不定積分,再講定積分,完全把順序弄顛倒了。好多人學完微積分,雖然已經用得得心應手,但仍然沒懂這是怎麼回事。究其原因,還是數學教學的問題。
我理想中的微積分課本則應該是先講定積分,再講導數,再講不定積分。先講定積分,不過千萬不能用現在的定積分符號,避免學生誤認為定積分是由不定積分發展而來的。講自古就有的積分思想,講分割求和取極限的方法,自創一套定積分的符號。然後另起爐灶,開始講微分,講無窮小,講變化量。最後才講到,隨著 x 一點一點的增加,曲線下方面積的變化量就是那一條條豎線的高度——不就是這個曲線本身的函數值嗎?因此,反過來,為了求出一個函數對應的曲線下方的面積,只需要找到一個新函數,使得它的微分正好就是原來那個函數。啪,微積分誕生了。
光講形式化的推導沒有用。這才是真正把微積分講懂的方式。嚴格定義和嚴格證明應該放到直觀理解之後。只可惜,我還沒看到哪本課本是這樣寫的。
說了這麼多,其實總結起來只有一句話:我們學習數學的過程,應該和人類認識數學的過程一樣。我們應該按照數學發展曆史的順序學習數學。我們應該從古人計數開始學起,學到算術和幾何,學到座標系和微積分,瞭解每個數學分支創立的動機,以及這個分支曲折的發展曆程。我們應該體會數學發展的每個瓶頸,體會每個全新理論的偉大之處,體會每一次數學危機讓數學家們手忙腳亂的感覺,體會先有直觀思維再給出形式化描述的艱難。
可惜,我沒有找到任何用這種方式學習數學的途徑。
不過也好。既然沒有捷徑,那就讓我自己把那堆形式化的定義和證明通看一遍,然後自己去體會其中的道理吧。這樣看來,我們的教育也沒錯:先用考試逼著大家把該學的東西都學了,儘管自己也不知道自己學的是啥;等將來的某一天達到一定高度時,回頭看看過去學的東西,突然恍然大悟,明白了當初學的究竟是什麼。這無疑是一件更有樂趣的事情。我希望有一天能像今天這樣,能悟出高等代數究竟在講什麼,能悟出範疇論到底有什麼用,能悟出 Riemann 假設為何如此牛 B,能悟出 Hilbert 空間是什麼東西,然後把它們都寫下來。
這恐怕得花我大半輩子的時間吧。
隨記:我們需要怎樣的數學教育?