張麗娜 黃有新 袁媛 崔平 曾嘉健
摘 ?要:針對面積估算普遍存在于工程計算當中,工作量大,計算復(fù)雜的實際情況,開展了基于計算機高級語言課程的面積估算研究,以蒙特卡羅拋灑法估算圖形面積實現(xiàn)層次分明的定積分計算,有效解決了面積估算過程中計算的復(fù)雜度,引領(lǐng)學(xué)生產(chǎn)生高成就感的深度學(xué)習(xí)行為,訓(xùn)練了計算思維能力。
關(guān)鍵詞:蒙特卡羅方法;深度學(xué)習(xí);計算機高級語言;定積分
中圖分類號:TP311.1 ? ? 文獻標識碼:A
Graph Area Estimation based on Monte Carlo Method
ZHANG Lina,HUANG Youxin,YUAN Yuan,CUI Ping,ZENG Jiajian
(1.Xuzhou University of Technology, Xuzhou 221000, China;
2.Jiangsu Xuzhou Higher Vocational School of Economics & Trading, Xuzhou 221000, China)
zlnzxy@126.com; 357888316@qq.com; 358919180@qq.com;
1659089277@qq.com; 714261756@qq.com
Abstract: Aiming at the heavy workload and complex calculation in Area estimation which is commonly used in engineering calculation, this paper conducts an area estimation research based on computer advanced language course. Monte Carlo scattering method is used to estimate the graph area, and the hierarchical definite integral calculation is realized. This method effectively solves the problem of calculation complexity in the area estimation process, leading students to carry out in-depth learning with high sense of achievement and train themselves the ability of computational thinking.
Keywords: Monte Carlo method; in-depth learning; graph area estimation; definite integral
1 ? 引言(Introduction)
為了防止講授知識變得空洞死板,保證學(xué)生的深度學(xué)習(xí)、培養(yǎng)學(xué)生的計算思維能力、確保學(xué)生的中心地位,進行教學(xué)案例的選擇與設(shè)計,在具體教育情境中設(shè)置理論應(yīng)用的描述,展開討論具體案例情境下的問題解決的實施方案[1]。托爾(Towl.A.R.)曾指出:“一個出色的案例,是教師與學(xué)生就某一具體事實相互作用的工具;一個出色的案例,是以實際生活情景中肯定會出現(xiàn)的事實為基礎(chǔ)所展開的課堂討論”。
土木工程量計算應(yīng)用中,常用到求建筑物截面面積,進而對土方、石方計算工程量,Python程序設(shè)計可以在不規(guī)則圖形上計算出其面積,實現(xiàn)建筑物截面計算。為此選擇了大一學(xué)生正在學(xué)習(xí)的定積分求面積,開展基于蒙特卡羅方法的Python程序設(shè)計,輔以騰訊課堂直播加QQ群討論授課模式,選擇超星學(xué)習(xí)通平臺提交實驗作業(yè)檢驗應(yīng)用成果。
2 ? 蒙特卡羅方法介紹(Introduction of Monte Carlo method)
蒙特卡羅方法起源于1777年法國數(shù)學(xué)家布豐(Georges Louis Leclere de Buffon)提出的利用投針實驗的方法求圓周率π。蒙特卡羅法在解決工程應(yīng)用實際問題的時候主要有兩部分工作:
(1)用蒙特·卡羅方法抽象出工程計算的概率模型,設(shè)計出隨機變量以展現(xiàn)模型概率分布情況。
(2)用統(tǒng)計學(xué)方法估計出概率模型的數(shù)字特征,量化計算出實際問題的數(shù)值解。
利用蒙特卡羅方法概率估算特點,對復(fù)雜不規(guī)則幾何形狀面積進行估算過程中,能夠?qū)⒂行娣e的計算轉(zhuǎn)換成概率問題求解,從而忽略圖形的復(fù)雜度。概率意義下的收斂,可以節(jié)約計算成本,降低解決面積估算過程中程序設(shè)計的空間復(fù)雜度,因而此方法在處理大型高復(fù)雜度圖形面積計算問題時具有強有力的優(yōu)勢。在電子計算機快速發(fā)展和科學(xué)技術(shù)工程計算應(yīng)用日趨復(fù)雜的具體情境下,蒙特卡羅方法的應(yīng)用日趨普遍。因此案例教學(xué)設(shè)計選擇了隨機拋點求幾何圖形面積的學(xué)習(xí)活動,能夠促使學(xué)生用計算思維方式解決問題,有針對性地設(shè)計出層次漸變的定積分計算的學(xué)習(xí)任務(wù),進行有效地課程學(xué)習(xí)規(guī)劃,培養(yǎng)學(xué)生在具體應(yīng)用情境下獨立運用高級語言Python程序設(shè)計的能力,達到訓(xùn)練計算思維,培養(yǎng)工程應(yīng)用中解決實際問題的能力。
3 ?定積分計算教學(xué)設(shè)計(Teaching design of definite integral calculation)
在計算思維教育理念的指導(dǎo)下,培養(yǎng)學(xué)生形成一種計算思維習(xí)慣,并且學(xué)會在利用計算機工程應(yīng)用過程中,像計算機科學(xué)家一樣思考分析和解決問題[2],疫情下的網(wǎng)絡(luò)授課給了實踐這一教學(xué)目標一個契機。
由于定積分方便檢驗計算結(jié)果,圖形的運動軌跡表達式能夠構(gòu)造出復(fù)雜不規(guī)則圖形,又由于定積分本身具有求圖形面積的幾何意義,所以在找尋拓展蒙特卡羅法計算不規(guī)則圖形面積的時候,引入了定積分的計算作為案例應(yīng)用來檢驗蒙特卡羅法估算圖形面積。
設(shè)置課前自主學(xué)習(xí)任務(wù)單:計算定積分;;。案例設(shè)置考慮了在積分表達式選擇上從單項式到多項式,從積分區(qū)域上從單位區(qū)間擴展到復(fù)雜數(shù)據(jù)區(qū)間。
引入Python的random庫當中隨機函數(shù)產(chǎn)生拋灑點的隨機坐標值(x,y),其中用到的函數(shù)及特點如表1所示。
4 ?案例驅(qū)動深度學(xué)習(xí)行為發(fā)生(Deep learning driven by cases)
在程序設(shè)計制作案例時,設(shè)置面向具體而復(fù)雜的現(xiàn)實世界抽象出信息處理的概念,基于概念來分析、綜合和演繹實際問題,定積分計算案例是選擇模擬工程應(yīng)用中建筑物剖面計算情況展開設(shè)計,學(xué)生展現(xiàn)出創(chuàng)作過程中的深度思考過程,在整堂課上,每一個個體都需要貢獻自己的智慧,沒有旁觀者,只有參與者,利用計算機進行面積估算,將設(shè)計思路用高級語言Python表達出來,展現(xiàn)出將抽象概念和解決問題的方法變成實現(xiàn)程序可操作具體步驟的能力,將淺層次的學(xué)習(xí)轉(zhuǎn)變成深度思考的學(xué)習(xí)過程[3,4],以下論述案例解決的不同展現(xiàn)形式。
設(shè)計了如圖1所示的曲線圖形,幾何表達為陰影部分面積,這正是定積分的幾何意義,利用蒙特卡羅法進行概率抽象,Python程序設(shè)計的學(xué)生答案表現(xiàn)形式如下:
表達方式一:
from random import random
from time import perf_counter
DARTS = 1000*1000*10
hits = 0.0
start = perf_counter( )
for i in range(1, DARTS+1) :
x,y = random(),random()
if pow(y,2) hits=hits+1 s = hits/DARTS print("面積是: {}" .format(s)) print("運行時間是: {}" .format(perf_counter()-start)) 表達方式二: from random import random darts=1000*1000 hits=0.0 for i in range(1,darts+1): x,y=random(),random() if y<=x**3: hits+=1 S=hits/darts print("所求面積為{}".format(S)) (a)表達方式一運行結(jié)果 (b)表達方式二運行結(jié)果 圖2是由以上兩種表達設(shè)計的Python程序運行實驗結(jié)果的對比展示,驗證了多種表達方式下圖形面積蒙特卡羅估算與數(shù)學(xué)計算定積分結(jié)果一致。進而,圖形構(gòu)造上升為兩條函數(shù)表達式構(gòu)造幾何圖形,如圖3定積分圖形幾何意義所示。 圖3 第一象限兩條函數(shù)曲線定積分圖形表示 Fig.3 Graphic representation of definite integral of two function curves in the first quadrant from random import random from time import perf_counter DARTS = 1000*1000*10 hits = 0.0 start = perf_counter( ) for i in range(1, DARTS+1) : x,y = random(),random() if pow(y,2) hits=hits+1 s = hits/DARTS print("面積是: {}" .format(s)) print("運行時間是: {}" .format(perf_counter()-start)) 圖4展示了蒙特卡羅估算Python程序運行結(jié)果非常接近數(shù)學(xué)計算定積分,最后從單位面積區(qū)域拓展到一四象限,概率統(tǒng)計結(jié)合整體區(qū)域估算圖形面積模擬計算,如圖5所示定積分。 表達方式一: from random import random from time import perf_counter DARTS = 1000*10 hits = 0.0 start = perf_counter( ) for i in range(1, DARTS+1) : x=8*random() y=6*random()-2 if pow(y,2)/2 hits=hits+1 s = (hits/DARTS)*48.0 print("面積是: {}" .format(s)) print("運行時間是: {}" .format(perf_counter()-start)) 換種積分角度,以X軸將圖形劃分成兩部分,上方擊中用pos+1表示與下方擊中表示成neg+1的表達方式二: from random import uniform darts=1000*1000 pos=0.0 neg=0.0 for i in range(1,darts+1): x,y=uniform(0,8),uniform(-2,4) if y>=0 and y>=x-4 and y<=(2*x)**0.5: pos+=1 elif y<0 and y>=x-4 and y>=-(2*x)**0.5: neg+=1 S=48*(pos+neg)/darts print("所求面積為{}".format(S)) 兩種表達的Python程序運行結(jié)果對比如圖6所示驗證了蒙特卡羅估算結(jié)果與定積分=18結(jié)果非常接近。 (a)表達方式一運行結(jié)果 (b)表達方式二運行結(jié)果 5 ?立體交流互動的網(wǎng)絡(luò)課堂(Three dimensional interactive network classroom) 淺層學(xué)習(xí)階段是能夠?qū)χR進行簡單的描述,停留在學(xué)習(xí)認知領(lǐng)域中的“知道、理解”層次;而深度學(xué)習(xí)是對知識在具體情境下的應(yīng)用,能夠利用所學(xué)知識解決具體情境中的問題,并且能加以創(chuàng)新或者改進,因而深度學(xué)習(xí)特點在于所學(xué)知識的應(yīng)用和具體情境下實際問題的解決[4]。在針對具體應(yīng)用設(shè)置的案例驅(qū)動下的學(xué)習(xí)是積極主動的,學(xué)生處于活躍開放的思維狀態(tài),利用騰訊課堂與群分享開展的網(wǎng)絡(luò)教學(xué)活動,設(shè)計選擇面積估算案例引導(dǎo)學(xué)生從問題出發(fā),借助課堂學(xué)習(xí)到的蒙特卡羅方法應(yīng)用到問題解決中來,促進深度學(xué)習(xí)行為產(chǎn)生,讓學(xué)生在程序設(shè)計中找到利用計算機解決具體面積估算問題的成就感。 在當前的網(wǎng)絡(luò)授課模式下,線上分享自己成果,充分發(fā)揮了教學(xué)立體交流互動和學(xué)習(xí)資源共享[5],學(xué)生線上課程參與度比傳統(tǒng)線下實體課堂要高[6],立體交流圖片如圖7所示。 (a)騰訊課堂交互情況圖 (b)QQ群分享屏幕交互情況圖 6 ? 結(jié)論(Conclusion) 由于有了基于蒙特卡羅法設(shè)置的案例驅(qū)動,高級語言程序設(shè)計課程可以通過網(wǎng)絡(luò)課程的組織形式,引導(dǎo)學(xué)生從把握算法特點和基本概念的淺層學(xué)習(xí),轉(zhuǎn)變成利用知識特點創(chuàng)編優(yōu)秀的高效程序設(shè)計的深度學(xué)習(xí),把傳統(tǒng)的單純學(xué)習(xí)知識變成在學(xué)習(xí)知識的基礎(chǔ)上,通過創(chuàng)作產(chǎn)生深度學(xué)習(xí)行為,從而在學(xué)生們知識結(jié)構(gòu)體系中播下了計算思維的種子。鼓勵和引導(dǎo)學(xué)生到自身專業(yè)領(lǐng)域?qū)で髣?chuàng)作解決實際問題編程思考中去,進而理解高級語言程序設(shè)計的精髓,實現(xiàn)對線下課堂學(xué)習(xí)的超越,這樣組織的網(wǎng)絡(luò)課堂才能夠真正扎實、高效。 參考文獻(References) [1] 沈貴慶.大數(shù)據(jù)分析在高校智慧教育中的應(yīng)用研究[J].現(xiàn)代電子技術(shù),2019,42(04):97-100. [2] Jeannette M.Wing.Computational thinking[J].Communications of the ACM,2006,49(3):33-35. [3] 嵩天,禮欣,黃天羽.Python語言程序設(shè)計基礎(chǔ)[M].北京:高等教育出版社,2017. [4] 劉哲雨,王志軍.行為投入影響深度學(xué)習(xí)的實證探究:以虛擬現(xiàn)實(VR)環(huán)境下的視頻學(xué)習(xí)為例[J].遠程教育雜志,2017(1):72-81. [5] 梁云真,趙呈領(lǐng),阮玉嬌,等.網(wǎng)絡(luò)學(xué)習(xí)空間中交互行為的實證研究——基于社會網(wǎng)絡(luò)分析的視角[J].中國電化教育,2016(7):22-28. [6] Myers S A, Claus C J. The Relationship Between Students' Motives to Communicate. With Their Instructors and classroom Environment[J]. Communication Quarterly, 2012, 60(3): 386-402. 作者簡介: 張麗娜(1978-),女,碩士,講師.研究領(lǐng)域:數(shù)據(jù)挖掘,深度學(xué)習(xí). 黃有新(1972-),男,本科,副教授.研究領(lǐng)域:深度學(xué)習(xí),英語翻譯,計算機英語. 袁 ?媛(1979-),女,碩士,講師.研究領(lǐng)域:深度學(xué)習(xí),大數(shù)據(jù). 崔 ?平(1979-),女,碩士,實驗師.研究領(lǐng)域:計算機網(wǎng)絡(luò),實驗室管理. 曾嘉?。?001-),男,本科生.研究領(lǐng)域:工程計算,程序設(shè)計.