
這篇文章我希望分享一下自己是如何學習數學。題目看起來很簡單,大部份的大學生已經經歷了很多數學科考試測驗,他們會覺得學習數學的方法應該非常清楚。但是從這麼多年的教學經驗,發覺同學們都會有一些錯誤的想法和觀念,所以希望這篇文章能夠給大家一些不同的想法,希望對同學長遠學習有一些幫助。
以我所知,大部份同學所謂學習數學,只重視增加自己的「題庫」。他們相信只要多花時間做練習,把所有考試題型記得滾瓜爛熟,能夠看見問題的第一句就把答案詳盡從記憶體裏面取出,這樣就是「有溫書」,「已經盡了力」,「搏盡無悔」,「把知識學習得一清二楚」。無可否認,這些同學在公開考試或者校內評核可能都會表現得非常出色名列前茅。因為大部份中學校內考試或者公開考試萬變不離其宗,有些題目可能是剪剪貼貼,從這裏抽取一部份貼在另外一部份上邊。只要同學有花時間「溫書」,考試都會表現得不錯。這樣,學校見到同學們拿到高分,自然會覺得老師教得不錯。考試局見到同學們成績都有所表現,自然可以對外宣傳同學們的數學水平很好,課程設計做得不錯。而且,考試局也可以「幫忙」一小部份「懶惰」的同學。對這些同學來說,他們可能根本不需要消化和明白這些數學概念,只需要把考試題目背熟,令到自己的「題庫」越來越豐富,成績也不會太差。
但這些同學真的明白那些數學概念嗎?記得前幾年我們數學系曾經針對大學第一年的同學做過一些統計,看看同學們在公開考試數學科的成績是否和大學第一年所必修的微積分課程的考試成績是否有很大的關係。就是說,如果同學們在公開考試拿到5**/5*在大學在修讀微積分是否也必定能拿得到好成績。以直覺來說,結果當然是肯定的。如果能夠在公開考試拿到這麼好的考試成績,應該就代表着同學們對數學的掌握不錯,在大學裏面應該也綽綽有餘,成績自然會好。統計結果指出,雖然兩個分數有關係(如果結論是完全沒有關係,那樣也太過出乎意料之外),但是關係非常少,統計上關係並不太過明顯。如果仔細看看數字,我們發現在公開考試取得好成績,在大學第一年的微積分成績只有C-range也大有人在,以往考試成績比較差的同學在大學也可以拿到A-range。對這些公開考試成績比較好的同學來說,收到這麼差的成績表當然會令他們大吃一驚,覺得為什麼大學的Grade那麼差,一定是學校的問題,一定是老師教得不好,一定是教的課程和考試範圍不一樣,一定是有一些東西教授沒有教,所以自己在考試時發覺很多問題都不懂怎麼做,所以成績這麼差。當然我不是說這些原因都是藉口,某些時候這些反應都是對的,始終教授做得最好的,應該還是研究而不是教書,所以無論是什麼大學什麼學系都應該會有一些教授有做得不足的地方。但我們數學系第一年的微積分有差不多20位老師負責,所教授的範圍都大致一樣。考試卷就算有不同的版本,深淺程度應該一樣。而且就算同學覺得某一位老師的教育方法不太合適自己,大可旁聽另外一位教授的課堂,自由度非常高。所以同學們的批評就可能顯得有點不太合理。
自己很少負責同學們第一年的微積分課程,很多時候教的都已經是同學們第三或者第四年的選修課。跟同學們聊天或者從其他老師口中,常常都會聽到同學說「那些東西已經是幾年前所學的,大部份已經不記得了」。我們都會聽得一頭霧水,為什麼會忘記的呢?如果已經經過消化和吸收成為了認知的一部份,如何可以忘記掉呢?唯一的解釋,就是同學們根本沒有學過,不是說老師從來沒有在課堂上講解過那個知識,而是同學們只忙着把課堂例子和功課答案,匆匆的複印到自己的腦海中,用以加大自己的「題庫」。他們都仍然運用着中學時候的學習模式,只着重背誦,而不去嘗試掌握所教導的知識。當時間流逝,這些在短時間內放到RAM的數據就會慢慢消失不見。而殘留在Hard Disk的知識,並不足運用到在大學第三或者第四年的選修課上面。
從這些經驗,自己就會覺得同學們完全沒有掌握學習的技巧和能力,只着重背誦,以為自己記得越多,越代表對這些知識越掌握。其實同學們在中學時記得越多,考試成績可能會越好,但這其實並不代表同學們掌握那些知識。同學們在大學時記得越多,成績反而應該會越差。因為我們在設計考試時並不會顧及同學花了多少時間背誦課文,我們所設計出來的考試題目都希望了解同學們對知識有多掌握。所以你愈花心神充實自己的題庫,就越是浪費時間,結果無力去消化內容。對着一份你從來沒見過的考試卷,在記憶體裏面不斷搜尋仍然找不到相似的題目,然後不知如何回應問題,那成績自然差。
這裏並不是要怪責同學,其實一路以來我都只怪責考試模式並不鼓勵同學們練習自己分析、了解和吸收的技巧,沒有讓同學們有學習的能力。同學們根本不懂如何學習,甚至乎根本沒有人教過他們應該如何學習。從小的教育模式(起碼自己從小在香港所碰到的),大部份都是老師在課堂將書本上的知識用精讀的方法在黑板上講一次,我們聽一次,看一次老師在講解的練習題,自己看看書本上的另一條非常相似的題目,嘗試模仿一次解題方式。做得到答案的,就會被認定為對知識已經掌握了。做不到答案的,老師在黑板上將那一條題目做一次,同學們抄一次,回家把方式記到腦海內,這就被理解為學過那一個概念了。
所以我們應該如何學習呢?下面所提到的是自己的方法,有可能並不適合所有同學。但作為參考應該還是有一丁點用途。同學們可以嘗試一下,如果對方法掌握,自己覺得長遠同學們還是有一點幫助。始終學海無涯,人生就是需要不斷學習。如果不早一點掌握到一個適合自己的學習方法,將來還是會走很多冤枉路,浪費很多時間。另外,下面所針對的,主要還是在唸大學的同學。始終自己沒有太多教中學生的經驗(回想一下,在唸碩士時,曾經到一間中學做過好幾天的代課,經驗都非常有趣),所以下面的這些分享在中學程度可能不太合適。
學習一門新的數學知識,最重要的還是要解答一個最根本的問題,就是我為什麼要學習這個知識。答案絕對不是因為畢業要求,所有的畢業要求都有一個根本的原因。出現在大學必修課的內容,就一定是因為你之後的某一個科目需要這個知識。你如果沒有掌握這個知識,以後就很難在這個基礎知識上面繼續發展豐富自己的智慧。這問題要求的答案,當然也不只是因為以後另外的課程需要用到他。這答案其實就跟沒有問過這個問題沒有分別。仍然是其他人要求你學,你就去學。我所指出的,是我們應該要對這個學習課題有好奇心,要清楚理解這個題目是什麼一回事,他希望解決的是什麼問題?出現的背景是什麼?沒有了他會如何?當得到這些問題的答案, 我們就有些提示,知道將來在什麼情況下有機會使用這些工具。當然,這些問題的答案都可能不太簡單。一般來說,大學課程的第一節課都會給一個總論,盡量給同學解答上面的這些問題。自己覺得第一節課是整個學期裏面最重要的一節課,所以都比較花時間準備。如果同學們錯失了這一節課,就非常可惜。
例如在大學第一年的微積分,我可能(這麼多年,其實我都沒有教過MATH1003或者MATH1012或者MATH1013。最相似的,可能也要數10多年前在HKDSE出現以前的MATH021,也就是後來的MATH1018。這門科目把現在一整年的微積分課程濃縮用一個學期完成,對現在的同學來說,根本不可能了)會提到微積分是了解函數的最重要工具,而函數就是運用數學描述科學的最精準工具。所以如果同學們沒有辦法掌握微積分,就很難用一套標準的語言描述世界。以物理為例,我們運用函數描述物體的軌跡,運用微分我們就可以精準定義跟描述物件運動的速度。又例如,我們可以運用函數描述物質在不同地方的密度,運用積分我們就可以精準定義物體的重量。當然我們還可以有一個高層一點的解釋,嘗試指出微分是一個從宏觀到微觀的方式,而積分就是一個相反的過程,blar blar blar。但自己猜想在第一節課講這個那麼抽象的說法,只會嚇怕同學。可能講一下物理,講一下化學,講一下工程等等的應用,就應該足夠讓同學們明白到微積分的重要和他到底如何影響着同學們在大學以後的主修課程。
又例如,在數值分析的第一節課,我會首先介紹一些我們沒法用手計算的數學問題,再介紹一些我們不想一步一步用手慢慢做的繁複計算,然後就可以引入整個課題的主旨,指出我們需要教導電腦如何嘗試把答案找出來。然後我會再定義「答案」。由於運用電腦解決數學問題,我們很多時候沒有辦法把確切的數值解找出,所以在數值方法上面,「答案」的理解跟同學們的認知會有所不同。這些背景同學都必須要搞清楚,要不是在不同章節裏面所介紹的數值方法,同學們就沒有辦法掌握到底是什麼一回事。當我們知道原來這門課程是幫助我們解決一些人類沒法用手去解決的數學問題,我就知道,在將來當我遇到一些非常困難的數學問題,我就多了一套工具在手,可以嘗試運用電腦將答案找出來。
當我們大約知道了為什麼我要學習這個數學知識,下一個問題就是「他到底是什麼」。這部份應該是同學們花最多時間的地方。在大部份課程裏面除了第一和最後一節課以外,我們應該用大部份時間在解釋和討論這個數學知識本身。以微積分課程為例,我們會花大部份時間介紹微分和積分,和他們裏面不同的方法和技巧。當然這些都非常重要,但在學習的過程更重要的是返回前面的一個問題,為什麼我們需要學這些方法?沒有了這些技巧,在計算時會遇到什麼困難?要知道大部份計算,儘管答案應該是唯一,找到這個答案的方法本身不一定是唯一。就是說,可能會有不同的方法都令到我們得到同一個答案。有些方法可能比較複雜,計算也需要花大量時間。而在學習過程,我們可能會碰到另外一套方法去解決同一個問題。裏面可能會有一個方法運用起來需要一點時間去掌握,但是找到答案的時間就會大大縮短。當我們一邊將不同方法作比較,我們其實就同一時間練習如何使用不同的數學技巧去解決問題。所以在學習的過程,我們不單止要掌握那個方法本身,更要了解在什麼時候我們可以使用這套知識。
舉個例子,在微分部份,我們會介紹乘法與除法公式(Product and Quotient Rules)。然後,經常會見到同學花很多時間去背誦尤其是除法公式,但是都考試時候又會把公式記錯,最後也找不到答案。如果同學們有花時間看一看這個公式本身,就會發現我們只需要把乘法公式弄清楚,自然可以從他得到除法公式(方法是把f/g寫成f*(1/g),然後使用乘法公式,再將答案化簡,我們就可以得出除法公式)。當同學們通過比較和花時間消化,我們就根本不需要浪費RAM去記着那個相對比較複雜的除法公式。我經常跟同學們說數學家就是最懶惰記憶力又差。原因就是我們都不願意記太多東西。我們知道隨着時間過去很多事情我們是沒有辦法記起來。所以如果我們將過程消化,將答案理解,我們其實就已經把知識吸收。當知識成為了我們一部份,我們其實就不用再浪費氣力把這些知識牢牢記在腦海裏。
另外一個題目是隱函數微分法(Implicit Differentiation),我們為什麼要學呢?就是由於他可以提供一個捷徑幫助我們計算某個函數的導數。假如我們知道x跟y有着一個f(x,y)=0的關係,我們當然可以把f(x,y)=0嘗試寫成y=g(x),再計算dy/dx可是很多時候要找出函數g不一定簡單,就算可以把這個函數找出來,計算他的導數也有機會很繁複。所以這個隱函數微分法就提供了一個捷徑給我們找出函數的導數。如果我們運用這個技巧到上面提到的除法公式,那會發生什麼事情呢?假設h=f/g,要計算h的導數,其實我們又可以將它寫成h*g=f,再運用隱函數微分法,我們就得到h’=(f’-hg’)/g,也就是我們所知道的除法公式。從這個例子我們又可以見到,同一個答案可以使用不同的公式和方法。只要同學們靈活運用這些方法,令到他們互相補足,就不會因為忘記了一個特定的技巧,而不知道如何解決一些數學問題。
第三個學習的過程,就是我們要看看是否和如何能把課程不同的部份連結起來。很多時候知識是一層一層蓋上去的,課程後期的課題,有時是需要前面的方法作為基礎。能夠把不同的部份放在同一個課程裏面,然後出現着這樣的次序,就代表着前面所教的,可能是比較基礎,而後面的可能是前面的某些應用。如果同學們可以看見這些連結,就會更加掌握整套知識。
以數值方法這個課程為例,我們很早就會介紹插值(Interpolation)的方法。對某些同學來說,這個題目在課程內顯得有點格格不入,最主要原因interpolation給出的是一個函數,並不是數值。所以出現在數值方法這個範疇可能會顯得有一點奇怪。但其實他是整個課程裏面其中一個最重要的題目。其中一個原因,是需要運用他來連繫兩個關於「答案」的概念。用數值方法解決微分方程問題,我們得到的其實只是一堆數值,而不是一個函數。大部份數學系的同學都會學習到微分方程的不同解決方法,所有的答案都是一個函數。當我們見到數值方法會找出一些跟同學們所認知的「答案」不一樣的結果,我們就需要用插值將這些點連繫到同學們比較熟悉的答案上面。又例如,我們如何教導電腦計算函數的導數呢?其實也是使用插值的方法。我們會將函數抽樣,運用插值得到函數的一個近似形式,再去計算他的導數。如何教導電腦計算函數的定積分呢?方法也是差不多,我們也會將函數抽樣,運用插值的方法去找到函數的一個近似形式,再去計算這個近似形式的定積分。所以無論函數是如何複雜,我們都不再需要使用不同的方法去找出函數的反導函數(antiderivative),因為所有近似形式都是一個我們熟悉的函數,找他的定積分就相對比較簡單。
為什麼求根(Root-Finding)會放在前面呢?因為後邊我們解決微分方程兩點邊值問題(Two-Point Boundary Value Problem)時,有一個方法叫做打靶法(Shooting Method),我們會運將兩點邊值問題重新寫成一個Root-Finding Problem,然後使用一些像牛頓法(Newton’s Method)的技巧快速地把答案找出來。然後,我們也可以使用Finite Difference的方法去解決同樣的問題。我們把函數的區域離散化,然後把方程式用Finite Difference的方法寫成方程組,這樣就可以把兩點邊值問題變化成一個高維的求根問題。
這些例子都會在不同課程裏面經常出現,同學們可以細心回想一下,題目跟題目有什麼關係,看看不同課程題目是如何安排,他們是如何連繫在一起。只要把這些關係搞清楚,我們對整個課程都會有一些更深刻的掌握。
總的來說,要學習數學,並不是要硬記所有公式和證明。運用這套方法,你只會需要不斷的加大自己的「腦容量」。所接觸的數學知識越來越多,你需要背誦的也跟着越來越複雜。到最後只會把所有的好奇心除掉,然後越來越對數學疲倦,甚至討厭了數學。自己覺得正確的學習方法,是要理解消化和掌握。把知識吸收,成為自己手握着的其中一項工具。將來遇到其他問題時,想想有沒有方法運用手上不同的工具去解決那個難題。 看到這裏的同學可能會覺得這篇文章比較「離地」,一點也不實用。所以下一篇文章,我會講一下對於數學科,我們應該如何溫書考試去拿取好成績。