安徽省阜陽市第三中學(xué)(236000) 尚林哪 董 俊
近年來,在眾多的程序設(shè)計語言中,Python 脫穎而出,應(yīng)用最為廣泛,跟其他程序設(shè)計語言相比,Python 作為一種面向?qū)ο蟮慕忉屝陀嬎銠C程序語言,其最主要的特點是語法簡潔清晰, 能夠把其他語言制作的模塊很輕松的聯(lián)結(jié)在一起,可用圖形化界面直觀呈現(xiàn)知識過程. Python 近幾年比較流行,在大數(shù)據(jù)處理,人工智能方面也大顯身手.
對數(shù)學(xué)教師而言,Python 語言簡潔,易寫易懂,至于一些復(fù)雜的案例,網(wǎng)上也都能找到豐富的源碼資源,所以Python編程對教師的代碼水平要求不高.
由于Python 的簡單易學(xué)、開源、可擴展性、豐富的庫、規(guī)范的代碼等特點,所以筆者選擇Python 編程輔助數(shù)學(xué)教學(xué).
隨著計算機技術(shù)的普及,大部分學(xué)生從小學(xué)就開始接觸一些簡單的計算機語言的編程,如c++,VB 等,這些語言簡單易學(xué),學(xué)生學(xué)習(xí)起來也很感興趣. 2017 版普通高中數(shù)學(xué)課程標(biāo)準(zhǔn)中指出課程修訂要堅持反映時代要求的基本原則,關(guān)注信息化環(huán)境下的教學(xué)改革. 在學(xué)生學(xué)習(xí)過程中,可以借助這些高級語言進行編程進而實現(xiàn)一些復(fù)雜問題的求解功能,使得學(xué)生容易獲得學(xué)習(xí)上的成就感,也能實現(xiàn)不同學(xué)生獲得不同的發(fā)展,實現(xiàn)以學(xué)生的發(fā)展為本的基本理念. 所以在高中數(shù)學(xué)教學(xué)中運用編程輔助教學(xué)不僅是可行的而且是很有意義的. 筆者將從以下幾點闡述Python 編程在數(shù)學(xué)教學(xué)中的輔助作用.
數(shù)學(xué)運算是指在明晰運算對象的基礎(chǔ)上,依據(jù)運算法則解決數(shù)學(xué)問題的素養(yǎng). 主要包括: 理解運算對象,掌握運算法則,探究運算思路,選擇運算方法,設(shè)計運算程序,求得運算結(jié)果等. 計算機編程最大的特點就是強大的計算能力,例如在學(xué)習(xí)統(tǒng)計時,為了更好地研究、描述和更好地理解數(shù)據(jù)集,在課堂上往往需要計算均值、中位數(shù)、眾數(shù),甚至方差、標(biāo)準(zhǔn)差和相關(guān)系數(shù),樣本空間較小時,學(xué)生容易運算得到結(jié)果,可是實際問題中,樣本空間往往比較大,計算也就難以完成,如果老師直接給出結(jié)果,學(xué)生可能無法接受,也無法獲得活動經(jīng)驗,從而難以真正理解數(shù)據(jù)集. 這時教師如果借助Python動態(tài)模擬整個計算過程,學(xué)生就自然能夠接受并且理解整個過程,得到不同程度的自我發(fā)展.
案例1. 二分法求方程的近似解
一元二次方程我們可以用公式求根,而指數(shù)方程、對數(shù)方程等超越方程和五次以上的高次代數(shù)方程不能用簡單的代數(shù)運算求解,我們會學(xué)習(xí)二分法來求這些方程的近似解.如利用python 解決一個高次方程為例來加深學(xué)生對二分法算法思維的理解. 例如方程f(x) = x3+1.1x2+0.9x ?1.4在區(qū)間[0,1]上的近似解.
思路分析: 求方程在[0,1]區(qū)間的近似解,可以先計算出區(qū)間端點值得函數(shù)值f(0)、f(1). 然后選取區(qū)間中間值計算選擇函數(shù)值乘積小于0 的兩個自變量,從而確定新的區(qū)間,再分別計算區(qū)間端點值處的函數(shù)值,和區(qū)間中間處的函數(shù)值,選擇函數(shù)值乘積小于0 的兩個自變量確定新的區(qū)間,循環(huán)操作,直至區(qū)間長度小于精確度,得到近似解. 程序代碼如圖1 所示:
圖1
其實隨著現(xiàn)代計算機技術(shù)的發(fā)展,像二分法、牛頓法、擬牛頓法、弦截法等在求解指數(shù)方程、對數(shù)方程等超越方程和五次以上的高次代數(shù)方程得到了廣泛的應(yīng)用,所以在我們的課堂上也不要再用以后你會學(xué)習(xí)到或者感興趣的同學(xué)自己查閱資料這樣的話來搪塞學(xué)生了.
新課程的課程目標(biāo)要求通過高中數(shù)學(xué)的學(xué)習(xí),學(xué)生能獲得進一步學(xué)習(xí)以及未來發(fā)展所必需的數(shù)學(xué)基礎(chǔ)知識、基本技能、基本思想、基本活動經(jīng)驗. 高中數(shù)學(xué)中很多知識學(xué)生只是被動接受了,并不能真正理解,大多是因為在學(xué)習(xí)中,沒有注重知識產(chǎn)生的過程,沒有獲得基本活動經(jīng)驗. 所以,教師在教學(xué)過程中可以借助Python 將抽象的概念、抽象的過程描述出來,使學(xué)生理解其原理,真正做到知其然,知其所以然.
例如新課程標(biāo)準(zhǔn)概率主題中,要求結(jié)合具體實例理解概率的性質(zhì),掌握隨機事件概率的運算法則,會用頻率估計概率,而最著名的實例就是拋硬幣的實驗,但是課堂上不易完成大數(shù)據(jù)次數(shù)的操作,學(xué)生無法理解實驗樣本數(shù)與探究結(jié)果之間的動態(tài)關(guān)系,故而筆者采用Python 編程,進行大數(shù)據(jù)模擬整個過程,便于學(xué)生獲得基本活動經(jīng)驗,理解隨機事件的概率的意義.
案例2. 模擬拋硬幣
在學(xué)習(xí)隨機事件的概率時,最著名的實驗就是拋硬幣實驗,投擲一枚質(zhì)地均勻的硬幣,它可能出現(xiàn)正面,也可能出現(xiàn)反面,教材中給出了歷史上曾有蒲豐,皮爾遜等人做過拋擲幾千次硬幣的試驗. 當(dāng)然,這些需要大規(guī)模樣本的實驗數(shù)據(jù)的實驗,教師不可能在課堂上完成,可以利用Python 快速模擬拋硬幣的情況.
思路分析: 投擲一枚質(zhì)地均勻的硬幣,并且記錄正面朝上占所有試驗中的比率. Python 的randint(0,1)函數(shù)可以等概率,隨機地返回0 與1 兩個數(shù),我們可以將返回的數(shù)值0 記為硬幣的反面,1 記為硬幣的正面,所以問題就轉(zhuǎn)換成了: 統(tǒng)計大量重復(fù)試驗中,結(jié)果為1 占總試驗次數(shù)的比例. 程序代碼如圖2 所示.
圖2
其運行結(jié)果如圖3 所示.
圖3
可見,隨著硬幣投擲次數(shù)的增加,正面朝上的幾率逐漸穩(wěn)定在0.5,這樣學(xué)生再去理解在重復(fù)試驗中,我們可以使用頻率的穩(wěn)定值作為事件發(fā)生的概率就深刻多了.
新課程標(biāo)準(zhǔn)的課程目標(biāo)要求: 學(xué)生能通過數(shù)學(xué)課程的學(xué)習(xí),提高學(xué)習(xí)的興趣,增強學(xué)好數(shù)學(xué)的自信心,養(yǎng)成良好的數(shù)學(xué)學(xué)習(xí)習(xí)慣,發(fā)展自主學(xué)習(xí)的能力. 但是傳統(tǒng)數(shù)學(xué)課堂往往很枯燥, 教師們?yōu)榱颂岣哒n堂的趣味性,激發(fā)學(xué)生學(xué)習(xí)的積極性,都是絞盡腦汁,各顯神通. 如果能將Python 編程融入到數(shù)學(xué)課堂,會使教學(xué)內(nèi)容更加豐富,會使課堂錦上添花,一定會調(diào)動起來學(xué)生學(xué)習(xí)數(shù)學(xué)的熱情和激情,同時也會激發(fā)老師研究學(xué)生、研究數(shù)學(xué)的積極性,提高教學(xué)水平.
例如學(xué)習(xí)一些特殊函數(shù)時,函數(shù)的圖像可以幫助學(xué)生更好地理解函數(shù)的性質(zhì), 尤其在學(xué)習(xí)指數(shù)函數(shù)與對數(shù)函數(shù)時,可以用Python 程序,繪制出準(zhǔn)確直觀的函數(shù)圖像,幫助學(xué)生清晰的看到更完整的函數(shù)圖像,進而更好地理解指數(shù)函數(shù)對數(shù)函數(shù)的性質(zhì),增強學(xué)生學(xué)習(xí)的興趣.
古今中外數(shù)學(xué)界有很多很重要的猜想, 有意思的算法,奇妙的自然理論,例如著名的哥德巴赫猜想,1742年哥德巴赫給歐拉寫了一封信,信中提出了一個猜想: 任一大于2 的偶數(shù)都可以寫成兩個質(zhì)數(shù)之和. 但是哥德巴赫自己無法證明它,故此才寫信請教當(dāng)時赫赫有名的大數(shù)學(xué)家歐拉幫忙證明,但是歐拉一生也無法證明. 隨著信息技術(shù)的發(fā)展,人們已經(jīng)因現(xiàn)今數(shù)學(xué)界已經(jīng)不使用“1 也是質(zhì)數(shù)”這個約定,原初猜想的現(xiàn)代陳述為: 任一大于5 的偶數(shù)都可以寫成兩個質(zhì)數(shù)之和.如果教師能借助Python 程序帶著學(xué)生一起實現(xiàn)這一偉大猜想的驗證,學(xué)生一定會感受到數(shù)學(xué)的價值,一定會更喜歡學(xué)習(xí)數(shù)學(xué). 再比如秦九韶算法,斐波那契序列與黃金比例等等,這些如果能帶著學(xué)生用Python 程序去體驗過程,實現(xiàn)結(jié)果,學(xué)生一定會認識到數(shù)學(xué)的科學(xué)價值、應(yīng)用價值、文化價值和審美價值.
案例3. 哥德巴赫猜想
哥德巴赫猜想任何一個充分大的偶數(shù)(大于等于6)總可以表示成兩個素數(shù)之和. 下面我們用Python 編寫程序?qū)?000 用兩個素數(shù)之和表示出來,我們可以用ⅠSprime( )函數(shù).
程序代碼如圖4 所示.
圖4
從結(jié)果可以驗證哥德巴赫的猜想是正確的,把學(xué)生覺得無法實現(xiàn)驗證的問題,不可捉摸的問題實實在在的擺在眼前,化抽象為具象,不僅使學(xué)生的疑惑得以解決,而且增加了學(xué)生對數(shù)學(xué)學(xué)習(xí)的興趣.
將程序與數(shù)學(xué)內(nèi)容結(jié)合起來,對學(xué)生來說,第一可以有效增強學(xué)生學(xué)習(xí)數(shù)學(xué)的興趣, 第二可以加深學(xué)生對數(shù)學(xué)內(nèi)容的理解, 第三可以為學(xué)生以后學(xué)習(xí)更復(fù)雜的數(shù)學(xué)內(nèi)容及python 程序語言打下堅實的基礎(chǔ),在解決問題的過程中提升計算思維,進而提升學(xué)生的學(xué)科核心素養(yǎng),達到教學(xué)的最終目標(biāo).