周令軒福建中學(小西灣)數學科科主任
數學建模(Mathematical Modelling) 是將現實問題轉化為數學形式,透過簡化、求解與驗證,來分析現象或做出決策。近年教育局透過校本課程、專題研習或是鼓勵學生參與數學建模比賽的形式,大力推動中小學進行數學建模教育。面對這項新的課程,有些前線教師會感到茫無頭緒,不知從何入手。筆者喜歡多讀中外數學史,環觀古代數學,中國人講求實際,古代中國數學發展有許多地方都是由實際處境出發,再運用數學原理解決,其實跟現代數學建模的理念吻合(當然,古文不曾出現「數學建模」這近代詞彙!但概念卻有接近之處)。本文嘗試從《孫子算經》中雞兔同籠一題為例子,說明如何古為今用,透過改造古題,讓初小學生體會數學建模,同時學習欣賞古人的智慧。
古代中國的數學建模
古代中國數學的題材能用作現代的數學教育嗎?能應用在建模學習上嗎?作者的答案是肯定的。唐代數學家李淳風,把先秦、兩漢、魏晉至隋唐期間的數學書整理,稱為《算經十書》。《算經十書》的內容以應用數學為主,通常都是給予一個處境,之後給予答案,並且附上題解,有時候還會有後世數學家加上注釋(例如劉徽的《九章算術注》)。例子如《九章算術》中第二章〈粟米〉,運用數學中的比率解決糧食交易問題。第九章〈勾股〉則運用畢氏定理、相似三角形等數學工具,解決一些距離問題等。可見其根本觀念,和現代數學建模類近。
唐宋時代,在官方考試也略有數學建模的雛形。唐代設立明算科,作為數學科的科舉制度,為國家選拔數學人才,以擔任朝廷欽天監(古代天文台)和土木工程工作。而《算經十書》的編寫,是當時明算科的 Syllabus 和 Textbook。蕭文強教授分析明算科考試當中,學生較大機會不是要死記硬背《十書》的公式和結果,反而他們需要懂得運用《十書》的技巧和方法,解決考題當中的實際問題,做出計算和結論。蕭教授曾經模擬明算科的考題,從中知道考生需要運用數學知識(例如《九章算術》中計算平截頭體的方法),計算墓穴入口的體積。1 在另一個場合,唐代官員楊損在一次選拔官員的過程中,曾當眾出一道數學題,誰先計算出答案誰便被提拔。題目如下:
「有一個人聽到有幾個盜賊商議,如何分配他們偷來的布匹。一個盜賊說,如果每人分六匹,則餘下五匹;如果每人分七匹,則少八匹。問有幾多個盜賊,布匹總數多少?」2
這題其實是由《孫子算經》中一道題改造而成。這些例子說明,在唐代已經有一些簡單的數學應用,雖然對比今時今日的數學建模還有距離,但最起碼看到,古人對待古典數學並非講求死記硬背,反而他們期望學習者能融會貫通,並且在實際場合應用。這一點啟發我古為今用;既然唐代可以古為今用,古題改造,今日我們是否也能仿效?把古代中國的數學題目做一些修潤改良,作為當代學生學習數學建模的材料。這樣做,讓學生體會數學建模之同時,也能欣賞古人的智慧,增加國民身份認同感,一舉兩得!
此圖為《孫子算經》的清代刻本書影,書中收錄了經典數學問題與度量衡規範。「雞兔同籠」問題最早便見於此書。
古題改造並且實踐數學建模在小學課堂上
帶着這份理念,筆者於兩年前跟一所小學同工分享想法,大家都抱着「邊做邊學」的心態,一同設計和推行數學建模學習。我們以一級小二的學生為對象,設計課堂內容並且在課堂實踐建模教學。
第一步:訂立清晰的教學目標
我們歸納了三個學習目標。第一,讓學生透過解決不常見的題目,學習把複雜的問題簡化。第二,學習透過列表法(窮舉法 Method of exhaustion)解決問題。第三,欣賞古人解決問題的方法。由於對象是初小學生,我們的目標只是讓學生淺嘗和體驗數學建模的循環,每一個目標不會、也不必太難,淺嘗即可。
我們最終選取《孫子算經》中雞兔同籠這條問題,原因是題目的解難技巧雖然對小二學生來講並不常見,但只要把題目設計稍作調整,學生有能力理解內容,也可以按老師指引一步一步完成體驗簡單建模過程。
第二步:根據教學目標設計教學流程和工作紙,並且在課堂上實踐
同工們先分析雞兔同籠題目,之後重新建構,由淺入深,並且加入合適的現代處境。再配以精美插圖,提升學生興趣。
原問題記錄在《孫子算經》下卷第 31 題,原文如下:
「今有雉、兔同籠,上有三十五頭,下九十四足。問雉、兔各幾何?」
題目重構:對初小學生而言,處理 35 個頭和 94 隻腳,數量過大,要考慮的情況過多。考慮到他們的數學工具有限,我們需要把頭和腳的數量減少。同時,同工們因應現實處境,把題目改造一下,務求讓處境盡量貼近實際需要,讓學生感知為甚麼我們只能知道頭和腳的數量,而無法得知動物的數量。所以在設計題目時候,同工們花了一些心思設計,不然學生覺得直接數雞和兔子的數量即可,何必無中生有,多此一舉!
同工們把處境設計如下:「農場有一個籠子 A,內有一些兔子和雞,由於兔子和雞走來走去,跑得快,很難直接一隻隻數出他們各自的數量,於是農場主人在籠子的頂部和底部放有測量儀器,頂部測量儀能測量籠子內有多少個頭,但不能分辨是兔子頭還是雞頭,底部測量儀能快速測量籠子動物有多少隻腳。現在測量得籠子 A 共有 14 個頭,牠們共有 40 隻腳,請問籠子中分別有兔子和雞多少隻?」
課堂上,老師先把這個題目給學生想想。學生於開始時會感到無從入手,有些同學則嘗試亂撞答案。這時,老師便可透過工作紙引導學生思考解題方法。
把「雞兔同籠」問題具象化,讓小二學生能透過生動的場景,將抽象的數學問題轉化為可視畫面,幫助學生建立問題模型,理解題意。
第三步:簡化和考慮極端情況
老師說:「既然同學未能想到解決辦法,不如先行把問題簡化,我們何不先考慮動物數量較少的處境?」
於是,老師引入一個簡化版的處境:「農場有一個籠子 B,內有 5 隻動物(5 個頭),牠們共有 12 隻腳,請問籠子中分別有兔子和雞多少隻?」
老師繼續透過提問,引導學生思考:
「同學們,籠子中可以全部動物都是兔子嗎?可以全部動物都是雞嗎?」
通過考慮以上兩個極端情況,同學皆迅速發現,因為雞有兩隻腳,如果籠子內全部都是雞,腳的總數將會是 5x2=10,腳的數量比題目的條件少。相反,因為兔子有四隻腳,如果籠子內全部都是兔子,腳的總數將會是 5x4=20,腳的數量比題目的條件多。
「啊!」老師繼續提出引導性問題,「這樣,籠子中,不能全部是雞,也不能全部是兔子,雞和兔子的數量一定分別在 0 和 5 之間,我們能否把全部情況列出呢?」
第四步:列表法(窮舉法)
於是,在老師的帶領下,學生嘗試把雞和兔子不同數量的情況,透過圖表有系統地列出來。以下(表格 1)是一位學生計算所得的結果。
表格1

從觀察以上列表,學生很快就能找出答案:籠子 B中,有一隻兔子,四隻雞。
看到學生已經能運用列表法找出答案,老師進一步鼓勵學生運用這個方法處理原本的題目(籠子 A)。
「Good !我們把原本的問題簡化,發現列表法可以幫助我們解決問題,我們能否依樣畫葫蘆,使用列表法在籠子 A 中找出分別有兔子和雞多少隻嗎?」
學生很聰明,在老師的引導下,很快就能依樣畫葫蘆,透過畫表,列舉出籠子 A 動物數量的所有可能性。以下(表格 2)是另一位學生計算所得的結果。
表格2

從上表反映,學生很快找出答案:籠子 A 中,有 6隻兔子,8 隻雞。
第五步:分組討論,理解方法背後的數學規律
在此,問題看似已經圓滿解決,但在數學建模的學習上,同工們覺得應該多走一步,讓學生多思考方法背後的數學原理,並且觀察數學的規律。
老師透過一系列的問題追問學生:「從表中你能觀察到甚麼規律?為甚麼會出現這些規律呢?有沒有更快捷的途徑計算呢?」
在課堂上,我們把不同能力的學生以四個為一組,給他們 15 分鐘時間分組討論,老師則到不同的組別指導。最後,老師安排時間,讓各組匯報他們的討論成果。學生都展現不錯的觀察力。以下略舉數例:
「表格 2 中,當兔子數量增加,雞的數量減少,腳的總數遞升,每次增加兩隻腳。」
「兔子腳的數量比雞腳的數量多出兩隻,所以當每次雞減少一隻,而兔子增加一隻的時候,腳的總數都會增加兩隻。」
「其實我們不用寫個表這麼麻煩,只需要在開始的時候,假設有 14 隻雞,沒有兔子,腳的總數則有 28 隻。這個數量跟題目要求的總數 40 隻腳相差 12 隻腳。由於上一組同學找到的規律,所以最終雞的數量答案減少 12/2 隻,即最終應該有雞 8 隻,兔子 6 隻。」
這些討論、思考和回饋的過程很重要,它讓學生發現數學的規律、思考更快捷或合理的方法和應用數學結果來解釋自然現象,從而作出合邏輯的結論。當然,這個過程並不是線性的,學生並非直接就得出以上簡潔的回答,同工們容許學生犯錯,並且經常不斷提問,適當地引導學生思考,讓學生判斷自己的思考過程是否合理,最後引導學生得出恰當的結論。
第六步:從研究和理解古人的解題方法,吸取當中的智慧。
《孫子算經》為雞兔同籠問題提供一個解法:「術曰:上置頭,下置足。半其足,以頭除足,以足除頭,即得。」
如何讓小學生理解這個道理呢?同工們思考良久,決定添加創意創作,有以下情節:
「農場主人學會了跟動物溝通的方法,他命令雞:『單腳企立』;又命令兔子『用後腳站起來』,動物們都聽他的號令。」
討論問題:
- 腳的總數量有多少?答: 共有 40/2=20 隻腳
- 腳的數量減去頭的數量等於多少?有甚麼意義呢?答: 20–14=6。因為現在,雞頭跟雞腳的數量一樣,多
出的腳一定是兔子的腳,所以兔子的數量為 6 隻!
- 如何計算兔子和雞的總數呢?
答: 兔子 6 隻,雞 8 隻。
接着,老師跟同學探討這個方法的優點,同學們都覺得這個方法很容易明白,並且不用列表,較為方便。
第七步:延伸思考,自創題目
最後,同工們在課堂最後一節,給予學生空間自創問題:如果可以加入一種新動物進入籠子中,同學們會加入甚麼動物呢?能否使用列表法找出各動物的數量呢?出乎老師的意料,有個學生提議加入若干條蛇放進籠子中,即時有同學反駁,並指出蛇不能放在雞和兔子的籠子中,因為蛇會吃掉雞和兔子。老師的應變能力很高,告訴學生假設這些蛇是「乖」的蛇,已經改邪歸正,

此題由學生提議:在籠中加入若干條「乖」蛇,作為「雞兔同籠」的延伸討論。由於蛇是有頭無腳的,所以學生運用列表法找出多於一個答案。
跟雞和兔子做朋友,不會吃掉它們,可以考慮在這個背景下,分析有多少條蛇?多少隻雞和多少隻兔子嗎?
學生於是使用列表法,發現由於蛇沒有腳,只有頭,最後的答案可能多過一個可能性,引發學生思考一道題可以多於一個答案(多個解)。老師最後引導學生,如果是這類情況,則需要更多資料才可以得出各種動物確實的數量。小二程度的學生能探究到這個程度,實屬意外收穫!(學生的列表分析詳細可見表格 3)
表格3

第八步:反思檢討
最後,老師為課堂作總結,老師請同學說說學到甚麼,並且寫下簡單反思心得。大部份同學都可以整理出這次所學的重點,例如簡化難題、考慮極端情況、列表法等。最後老師引導同學,每個數學建模都有一些假設,例如這個模型,它的假設就是沒有蹩腳兔子和蹩腳雞!如果有的話,這個模型就不能準確計算動物的數量了。
反思這部份是很重要的,讓學生整理自己的學習心得,鞏固知識。同時,讓學生了解數學建模的限制,每個模型都有一些假設,所以在應用模型和它的結果時,必須先檢查假設是否成立。
總結
在同工的檢討會議上,同工都覺得這是一次難得的經驗!學生投入參與,同工也能透過簡單的課堂設計,向初小學生引入數學建模教學。同工們(包括筆者)透過這次經歷,也打破了數學建模好像高深莫測的錯誤迷思,原來同工只需多花心思,多觀察,按學生程度把問題簡化、優化、趣味化、現實化,在古典中也可以找到好例子,建立學生數學建模的概念。
另外,有同工也提出雞兔同籠這道題,放在高小、初中甚至高中也合適。配合學生的程度和當時學習的數學工具,則可以變為合適的建模題,如果放在高中 M2,甚至可以引入矩陣和高斯消元法,探討雞、兔、蛇問題的一般解,非常有趣。
筆者期望透過這篇文章,分享自身一些數學建模的經驗,希望達到拋磚引玉的效果,讓廣大同工能從數學史的寶庫中,發掘「寶藏」!
參考資料:
1. 蕭文強(2004),中國古代官學數學課程:考生是怎樣學習和準備考試的?
2. 劉季學(2002),楊損考吏與盈虧問題;《小學時代》2002年Z1期
