張麗娜 黃有新 袁媛 崔平 曾嘉健



摘 ?要:針對面積估算普遍存在于工程計算當中,工作量大,計算復雜的實際情況,開展了基于計算機高級語言課程的面積估算研究,以蒙特卡羅拋灑法估算圖形面積實現層次分明的定積分計算,有效解決了面積估算過程中計算的復雜度,引領學生產生高成就感的深度學習行為,訓練了計算思維能力。
關鍵詞:蒙特卡羅方法;深度學習;計算機高級語言;定積分
中圖分類號: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)
為了防止講授知識變得空洞死板,保證學生的深度學習、培養學生的計算思維能力、確保學生的中心地位,進行教學案例的選擇與設計,在具體教育情境中設置理論應用的描述,展開討論具體案例情境下的問題解決的實施方案[1]。托爾(Towl.A.R.)曾指出:“一個出色的案例,是教師與學生就某一具體事實相互作用的工具;一個出色的案例,是以實際生活情景中肯定會出現的事實為基礎所展開的課堂討論”。
土木工程量計算應用中,常用到求建筑物截面面積,進而對土方、石方計算工程量,Python程序設計可以在不規則圖形上計算出其面積,實現建筑物截面計算。為此選擇了大一學生正在學習的定積分求面積,開展基于蒙特卡羅方法的Python程序設計,輔以騰訊課堂直播加QQ群討論授課模式,選擇超星學習通平臺提交實驗作業檢驗應用成果。
2 ? 蒙特卡羅方法介紹(Introduction of Monte Carlo method)
蒙特卡羅方法起源于1777年法國數學家布豐(Georges Louis Leclere de Buffon)提出的利用投針實驗的方法求圓周率π。蒙特卡羅法在解決工程應用實際問題的時候主要有兩部分工作:
(1)用蒙特·卡羅方法抽象出工程計算的概率模型,設計出隨機變量以展現模型概率分布情況。
(2)用統計學方法估計出概率模型的數字特征,量化計算出實際問題的數值解。
利用蒙特卡羅方法概率估算特點,對復雜不規則幾何形狀面積進行估算過程中,能夠將有效面積的計算轉換成概率問題求解,從而忽略圖形的復雜度。概率意義下的收斂,可以節約計算成本,降低解決面積估算過程中程序設計的空間復雜度,因而此方法在處理大型高復雜度圖形面積計算問題時具有強有力的優勢。在電子計算機快速發展和科學技術工程計算應用日趨復雜的具體情境下,蒙特卡羅方法的應用日趨普遍。因此案例教學設計選擇了隨機拋點求幾何圖形面積的學習活動,能夠促使學生用計算思維方式解決問題,有針對性地設計出層次漸變的定積分計算的學習任務,進行有效地課程學習規劃,培養學生在具體應用情境下獨立運用高級語言Python程序設計的能力,達到訓練計算思維,培養工程應用中解決實際問題的能力。
3 ?定積分計算教學設計(Teaching design of definite integral calculation)
在計算思維教育理念的指導下,培養學生形成一種計算思維習慣,并且學會在利用計算機工程應用過程中,像計算機科學家一樣思考分析和解決問題[2],疫情下的網絡授課給了實踐這一教學目標一個契機。
由于定積分方便檢驗計算結果,圖形的運動軌跡表達式能夠構造出復雜不規則圖形,又由于定積分本身具有求圖形面積的幾何意義,所以在找尋拓展蒙特卡羅法計算不規則圖形面積的時候,引入了定積分的計算作為案例應用來檢驗蒙特卡羅法估算圖形面積。
設置課前自主學習任務單:計算定積分;;。案例設置考慮了在積分表達式選擇上從單項式到多項式,從積分區域上從單位區間擴展到復雜數據區間。
引入Python的random庫當中隨機函數產生拋灑點的隨機坐標值(x,y),其中用到的函數及特點如表1所示。
4 ?案例驅動深度學習行為發生(Deep learning driven by cases)
在程序設計制作案例時,設置面向具體而復雜的現實世界抽象出信息處理的概念,基于概念來分析、綜合和演繹實際問題,定積分計算案例是選擇模擬工程應用中建筑物剖面計算情況展開設計,學生展現出創作過程中的深度思考過程,在整堂課上,每一個個體都需要貢獻自己的智慧,沒有旁觀者,只有參與者,利用計算機進行面積估算,將設計思路用高級語言Python表達出來,展現出將抽象概念和解決問題的方法變成實現程序可操作具體步驟的能力,將淺層次的學習轉變成深度思考的學習過程[3,4],以下論述案例解決的不同展現形式。
設計了如圖1所示的曲線圖形,幾何表達為陰影部分面積,這正是定積分的幾何意義,利用蒙特卡羅法進行概率抽象,Python程序設計的學生答案表現形式如下:
表達方式一:
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)表達方式一運行結果 (b)表達方式二運行結果 圖2是由以上兩種表達設計的Python程序運行實驗結果的對比展示,驗證了多種表達方式下圖形面積蒙特卡羅估算與數學計算定積分結果一致。進而,圖形構造上升為兩條函數表達式構造幾何圖形,如圖3定積分圖形幾何意義所示。 圖3 第一象限兩條函數曲線定積分圖形表示 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程序運行結果非常接近數學計算定積分,最后從單位面積區域拓展到一四象限,概率統計結合整體區域估算圖形面積模擬計算,如圖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程序運行結果對比如圖6所示驗證了蒙特卡羅估算結果與定積分=18結果非常接近。 (a)表達方式一運行結果 (b)表達方式二運行結果 5 ?立體交流互動的網絡課堂(Three dimensional interactive network classroom) 淺層學習階段是能夠對知識進行簡單的描述,停留在學習認知領域中的“知道、理解”層次;而深度學習是對知識在具體情境下的應用,能夠利用所學知識解決具體情境中的問題,并且能加以創新或者改進,因而深度學習特點在于所學知識的應用和具體情境下實際問題的解決[4]。在針對具體應用設置的案例驅動下的學習是積極主動的,學生處于活躍開放的思維狀態,利用騰訊課堂與群分享開展的網絡教學活動,設計選擇面積估算案例引導學生從問題出發,借助課堂學習到的蒙特卡羅方法應用到問題解決中來,促進深度學習行為產生,讓學生在程序設計中找到利用計算機解決具體面積估算問題的成就感。 在當前的網絡授課模式下,線上分享自己成果,充分發揮了教學立體交流互動和學習資源共享[5],學生線上課程參與度比傳統線下實體課堂要高[6],立體交流圖片如圖7所示。 (a)騰訊課堂交互情況圖 (b)QQ群分享屏幕交互情況圖 6 ? 結論(Conclusion) 由于有了基于蒙特卡羅法設置的案例驅動,高級語言程序設計課程可以通過網絡課程的組織形式,引導學生從把握算法特點和基本概念的淺層學習,轉變成利用知識特點創編優秀的高效程序設計的深度學習,把傳統的單純學習知識變成在學習知識的基礎上,通過創作產生深度學習行為,從而在學生們知識結構體系中播下了計算思維的種子。鼓勵和引導學生到自身專業領域尋求創作解決實際問題編程思考中去,進而理解高級語言程序設計的精髓,實現對線下課堂學習的超越,這樣組織的網絡課堂才能夠真正扎實、高效。 參考文獻(References) [1] 沈貴慶.大數據分析在高校智慧教育中的應用研究[J].現代電子技術,2019,42(04):97-100. [2] Jeannette M.Wing.Computational thinking[J].Communications of the ACM,2006,49(3):33-35. [3] 嵩天,禮欣,黃天羽.Python語言程序設計基礎[M].北京:高等教育出版社,2017. [4] 劉哲雨,王志軍.行為投入影響深度學習的實證探究:以虛擬現實(VR)環境下的視頻學習為例[J].遠程教育雜志,2017(1):72-81. [5] 梁云真,趙呈領,阮玉嬌,等.網絡學習空間中交互行為的實證研究——基于社會網絡分析的視角[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-),女,碩士,講師.研究領域:數據挖掘,深度學習. 黃有新(1972-),男,本科,副教授.研究領域:深度學習,英語翻譯,計算機英語. 袁 ?媛(1979-),女,碩士,講師.研究領域:深度學習,大數據. 崔 ?平(1979-),女,碩士,實驗師.研究領域:計算機網絡,實驗室管理. 曾嘉健(2001-),男,本科生.研究領域:工程計算,程序設計.