汪 吉
(武漢市廣播電視大學(xué)漢陽(yáng)區(qū)分校,湖北 武漢 430050)
“計(jì)算方法”是計(jì)算數(shù)學(xué)的分支,是研究用計(jì)算機(jī)求解數(shù)學(xué)問題的數(shù)值計(jì)算方法及其理論的一門課程。[1]本課程具有知識(shí)結(jié)構(gòu)分散、算法公式復(fù)雜、推導(dǎo)過程繁瑣等特點(diǎn)。傳統(tǒng)的教學(xué)模式多注重講授算法的基本原理,公式推導(dǎo)和算例演算占據(jù)了大部分教學(xué)時(shí)間,再加上缺乏實(shí)驗(yàn)環(huán)節(jié)的教學(xué),學(xué)生普遍感到枯燥乏味,學(xué)習(xí)興趣不高,教學(xué)效果不理想。
隨著計(jì)算機(jī)可視化技術(shù)的發(fā)展,其在教育教學(xué)領(lǐng)域的應(yīng)用日益廣泛。所謂可視化,是指將數(shù)據(jù)、信息和知識(shí)轉(zhuǎn)化為可視的表示形式,從而獲得更深層次認(rèn)識(shí)的過程。因此,教學(xué)過程的可視化是降低認(rèn)知難度、增強(qiáng)認(rèn)知能力,提升教學(xué)效果的重要途徑。[2,3]
眾所周知,“計(jì)算方法”在教學(xué)過程需要大量的數(shù)值計(jì)算和結(jié)果繪圖,傳統(tǒng)的算式推導(dǎo)和圖形繪制浪費(fèi)有限的教學(xué)時(shí)間,學(xué)生也難以產(chǎn)生數(shù)學(xué)知識(shí)的具體概念,理解起來比較吃力。借助可視化的理論教學(xué),操作有關(guān)數(shù)學(xué)軟件,能將算法執(zhí)行過程中每個(gè)步驟的圖形和計(jì)算結(jié)果動(dòng)態(tài)地演示出來,并可不受限制地重復(fù)播放。[4,5]這樣節(jié)省了教學(xué)時(shí)間,使得教師有更多的精力集中在重難點(diǎn)教學(xué)上,更容易把典型的、代表性強(qiáng)的理論和算法講透,讓學(xué)生在有限的時(shí)間內(nèi)接受和掌握更多知識(shí)。
“計(jì)算方法”作為與計(jì)算機(jī)密切結(jié)合的數(shù)學(xué)課程,在進(jìn)行理論教學(xué)的同時(shí)配以實(shí)驗(yàn)教學(xué),才能使學(xué)生真正理解和掌握算法。[6]通過可視化的實(shí)驗(yàn)教學(xué),讓學(xué)生自主操作數(shù)學(xué)軟件,針對(duì)不同的數(shù)據(jù)輸入,通過圖形直觀地反映實(shí)驗(yàn)結(jié)果的變化,這種交互式體驗(yàn)有利于調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,加深學(xué)生對(duì)所學(xué)知識(shí)的理解。
要實(shí)現(xiàn)開放教育“計(jì)算方法”教學(xué)的可視化,就必須針對(duì)開放教育的特點(diǎn),選擇合適的數(shù)學(xué)軟件作為可視化平臺(tái)。Matlab、Mathematica、Maple等軟件雖然數(shù)值計(jì)算功能強(qiáng)大,但作為商業(yè)化軟件,對(duì)開放教育的學(xué)生而言獲取有一定難度。其安裝過程復(fù)雜,運(yùn)行對(duì)計(jì)算機(jī)硬件配置也有一定要求。想要熟練掌握這些軟件進(jìn)行數(shù)學(xué)實(shí)驗(yàn),也需要花大量的時(shí)間和精力進(jìn)行學(xué)習(xí)和訓(xùn)練。
GeoGebra作為開源的數(shù)學(xué)軟件,免費(fèi)提供適用于計(jì)算機(jī)、平板電腦、智能手機(jī)各種操作系統(tǒng)的版本,能很好地滿足開放教育學(xué)生“人人皆學(xué)、處處能學(xué)、時(shí)時(shí)可學(xué)”的開放性學(xué)習(xí)需求。軟件集成了微積分、線性代數(shù)、解析幾何、概率統(tǒng)計(jì)等多種功能模塊,特別是圖形處理能力強(qiáng)大,能動(dòng)態(tài)呈現(xiàn)代數(shù)方程和幾何圖形的同步變化,非常適于可視化教學(xué),已在歐美許多國(guó)家得到大力推廣并廣受好評(píng)。
將GeoGebra引入“計(jì)算方法”的教學(xué)中,可以很好地解決理論教學(xué)效果不佳的問題。教師不僅可以在課堂教學(xué)中利用軟件的即時(shí)演示功能進(jìn)行講解,還可以利用其便利的分享功能進(jìn)行教學(xué)。軟件的程序文檔可導(dǎo)出為GIF動(dòng)圖或分享到GeoGebra官方網(wǎng)站,并在網(wǎng)頁(yè)上直接運(yùn)行。教師也可將源程序文檔作為附件分享到國(guó)家開放大學(xué)學(xué)習(xí)網(wǎng)相應(yīng)課程的學(xué)習(xí)論壇上,供學(xué)生下載學(xué)習(xí)。
將GeoGebra引入“計(jì)算方法”的教學(xué)中,可以很好地解決實(shí)驗(yàn)教學(xué)開展困難的問題。地方開放大學(xué)(廣播電視大學(xué))因受師資情況、課時(shí)安排、硬件水平等條件的制約,大都沒能安排數(shù)學(xué)實(shí)驗(yàn)。對(duì)開放教育的學(xué)生而言,進(jìn)行數(shù)學(xué)實(shí)驗(yàn)的宗旨不在于熟練掌握Matlab等高級(jí)語(yǔ)言以便進(jìn)一步從事研究工作,而是通過實(shí)驗(yàn)讓學(xué)生直觀地感受算法的基本原理,比較算法的優(yōu)劣,加深對(duì)學(xué)科基礎(chǔ)知識(shí)的理解,提高學(xué)習(xí)的主動(dòng)性和積極性。GeoGebra軟件具有免費(fèi)開源、平臺(tái)多樣、命令簡(jiǎn)單、易于學(xué)習(xí)的特點(diǎn),很適合開放教育的數(shù)學(xué)實(shí)驗(yàn)。學(xué)生可以選擇在常用的學(xué)習(xí)設(shè)備上安裝軟件,借助教師發(fā)布的實(shí)驗(yàn)資源,做到時(shí)時(shí)、處處自主學(xué)習(xí)。
非線性方程求根是“計(jì)算方法”的重要內(nèi)容。一般而言,絕大部分非線性方程都不存在求根公式,很難得到根的準(zhǔn)確值,只能通過算法逼近來根的近似值,區(qū)間二分法和切線法就是其中的兩種經(jīng)典算法。下面以GeoGebra Classic 5中文版為平臺(tái),探討軟件在這兩種算法可視化教學(xué)中的實(shí)現(xiàn)。
1.算法原理
設(shè)函數(shù)f(x)在[a,b]上連續(xù),若f(a)·f(b)<0,則f(x)在(a,b)上至少有一個(gè)根x*。
(a)若f(x1)=0,則x*=x1;
(b)若f(a)·f(x1)<0,則x*∈[a,x1]=[a1,b1];
(c)若f(b)·f(x1)<0,則x*∈[x1,b]=[a1,b1].
2.算法實(shí)現(xiàn)
Step1:在繪圖區(qū)中新建4個(gè)輸入框,分別對(duì)應(yīng)方程、區(qū)間端點(diǎn)、精度。
Step2:在繪圖區(qū)中新建按鈕button1,命名為“初始化”。右擊按鈕,選擇“屬性/腳本”,在“單擊時(shí)”標(biāo)簽中選擇“GeoGebra腳本”,輸入以下命名:
a=0; b=0; 賦值(a,aInput); 賦值(b,bInput); y_a=f(a); y_b=f(b);
l_1={}; l_2={}; l_3={}; l_4={}; l_5={}; l_6={};
i=1; x_0=(a+b)/2; y_0=f(x_0);
r=abs(a-b); e1=lg(r); r_s=科學(xué)記數(shù)法(r);
c="F"; 設(shè)置顯示條件(c,false); c1=字母轉(zhuǎn)換為統(tǒng)一碼[c];
d="T"; 設(shè)置顯示條件(d,false); d1=字母轉(zhuǎn)換為統(tǒng)一碼[d];
賦值(l_1,i,i-1); 賦值(l_2,i,a); 賦值(l_3,i,b); 賦值(l_4,i,x_0); 賦值(l_5,i,er);
如果((y_0==0)||(e1 設(shè)置顯示條件(text1,true); Step3:在繪圖區(qū)中新建按鈕button2,命名為“執(zhí)行一次”。同樣在“GeoGebra腳本”中,輸入以下命令: 如果(y_a*y_0<0,賦值(b,x_0),賦值(a,x_0)); 賦值(l_1,i+1,i); 賦值(l_2,i+1,a); 賦值(l_3,i+1,b); 賦值(l_4,i+1,x_0); 賦值(l_5,i+1,er); 如果((y_0==0)||(e1 Step4:在繪圖區(qū)中新建一個(gè)滑動(dòng)條,取值為從1到10的整數(shù),命名為“執(zhí)行次數(shù)n”。新建按鈕button3,命名為“執(zhí)行n次”。在“GeoGebra腳本”中,輸入以下命令: 重復(fù)(執(zhí)行次數(shù)n,運(yùn)行單擊腳本(button2)); Step5:在指令欄依次輸入以下命令: l1=插入("n",l_1,1) l2=插入("a_{n-1}",l_2,1) l3=插入("b_{n-1}",l_3,1) l4=插入("x_n",l_4,1) l5=插入("abs(a_{n-1}-b_{n-1})",l_5,1) l6=插入("終止條件",l_6,1) text1=表格文本({l1,l2,l3,l4,l5,l6},"cv|_") text2="=0" text3="精度:E" text4=文本("(a,b)",(A'+B')/2,false,false) A=(a,0) B=(b,0) X=(x_0,0) A'=A+(0,1) B'=B+(0,1) u=向量(A',B') v=向量(B',A') g=如果(f(a)<0,線段(A',(a,f(a))),如果(f(a)<1,線段(A,A'),線段(A,(a,f(a))))) h=如果(f(b)<0,線段(B',(b,f(b))),如果(f(b)<1,線段(B,B'),線段(B,(b,f(b))))) 3.算法實(shí)例 以區(qū)間二分法求方程(x-2)ex-1=0的根(精確到10-2)。因?yàn)閒(2)·f(3)<0,故取初始有根區(qū)間為(2,3)。算法的動(dòng)態(tài)演示界面如圖1。 圖1 區(qū)間二分法的動(dòng)態(tài)演示 在輸入框中輸入方程、區(qū)間端點(diǎn)、求解精度等參數(shù)后,單擊“初始化”按鈕,完成參數(shù)的輸入。單擊“執(zhí)行一次”按鈕后算法完成一次計(jì)算,執(zhí)行過程的圖形同步顯示在繪圖區(qū),執(zhí)行次數(shù)、區(qū)間端點(diǎn)坐標(biāo)、區(qū)間中點(diǎn)坐標(biāo)、是否滿足終止條件等均以表格形式同步顯示在繪圖區(qū)2中。拖動(dòng)滑動(dòng)條“執(zhí)行次數(shù)n”,然后單擊“執(zhí)行n次”按鈕,即可得到n次計(jì)算后的結(jié)果。 隨著執(zhí)行次數(shù)的遞增,有根區(qū)間的范圍逐步縮小,區(qū)間中點(diǎn)與方程的根逐步接近。執(zhí)行7次后,終止條件由“F”變?yōu)椤癟”,得到符合精度要求的近似解。 1.算法原理 對(duì)于非線性方程f(x)=0,設(shè)x0是根x*的一個(gè)初始近似值。 若y=f(x)二次連續(xù)可導(dǎo),過f(x)上的點(diǎn)(x0,f(x0))做切線,切線方程為y=f(x0)+f′(x0)(x-x0),則取此切線與x軸交點(diǎn)的橫坐標(biāo)x1作為x*的一個(gè)新的近似值。 重復(fù)上述過程,得到近似解數(shù)列{xn},其迭代公式為: 2.算法實(shí)現(xiàn) Step1:在繪圖區(qū)中新建3個(gè)輸入框,分別對(duì)應(yīng)方程、初始點(diǎn)坐標(biāo)、精度。 Step2:在繪圖區(qū)中新建按鈕button1,命名為“初始化”。右擊按鈕,選擇“屬性/腳本”,在“單擊時(shí)”標(biāo)簽中選擇“GeoGebra腳本”,輸入以下命名: i=1; x_0=0; 賦值(x_0,a); y_0=f(x_0); r=lg(abs(y_0)); X=(x_0,0); X'=(x_0,y_0); y_s=科學(xué)記數(shù)法(y_0); 設(shè)置顯示條件(y_s,false); c=如果(r l_1={}; l_2={}; l_3={}; l_4={}; d_1={}; d_2={}; 賦值(l_1,i,i-1); 賦值(l_2,i,x_0); 賦值(l_3,i,y_s); 賦值(l_4,i,c); 賦值(d_1,i,X'); 賦值(d_2,i,X); Step3:在繪圖區(qū)中新建按鈕button2,命名為“執(zhí)行一次”。同樣在“GeoGebra腳本”中,輸入以下命令: x_1=x_0-y_0/df; 設(shè)置顯示條件(x_1,false); 賦值(i,i+1); 賦值(x_0,x_1); 賦值(l_1,i,i-1); 賦值(l_2,i,x_0); 賦值(l_3,i,科學(xué)記數(shù)法(y_0)); 賦值(l_4,i,c); 賦值(d_1,i,X'); 賦值(d_2,i,X); Step4:在繪圖區(qū)中新建一個(gè)滑動(dòng)條,取值為從1到10的整數(shù),命名為“執(zhí)行次數(shù)n”。新建按鈕button3,命名為“執(zhí)行n次”。在“GeoGebra腳本”中,輸入以下命令: 重復(fù)(執(zhí)行次數(shù)n,運(yùn)行單擊腳本(button2)); Step5:在指令欄依次輸入以下命令: l1=插入("n",l_1,1) l2=插入("x_n",l_2,1) l3=插入("f(x_n)",l_3,1) l4=插入("終止條件",l_4,1) l5=序列(線段(元素(d_1,i),元素(d_2,i)),i,1,長(zhǎng)度(d_1)) l6=序列(線段(元素(d_1,i),元素(d_2,i+1)),i,1,長(zhǎng)度(d_1)) df=元素(映射(g(x_0),g,{導(dǎo)數(shù)(f)}),1) text1=表格文本(l1,l2,l3,l4,"cv|_") text2="=0" text3="精度:E" X=(x_0,0) X'=(x_0,y_0) 3.算法實(shí)例 以切線法求方程(x-2)ex-1=0的根(精確到10-2),取初始點(diǎn)x0=3。算法的動(dòng)態(tài)演示界面如圖2。 圖2 切線法的動(dòng)態(tài)演示 切線法的可視化操作方法與區(qū)間二分法相同,算法執(zhí)行過程中每一步的切線、切線與x軸交點(diǎn)等圖形同步顯示在繪圖區(qū),有關(guān)數(shù)據(jù)以表格形式顯示在繪圖區(qū)2中。拖動(dòng)滑動(dòng)條“執(zhí)行次數(shù)n”,然后單擊“執(zhí)行n次”按鈕,即可得到n次計(jì)算后的結(jié)果。。隨著執(zhí)行次數(shù)的遞增,切線與x軸的交點(diǎn)逐步接近方程的根。4次執(zhí)行后,終止條件由“F”變?yōu)椤癟”,得到符合精度要求的近似解。從算法的對(duì)比演示明顯看出,切線法的收斂速度比區(qū)間二分法快。 在教學(xué)實(shí)踐中,學(xué)生可以自主修改方程、初始值等參數(shù),進(jìn)一步觀察參數(shù)對(duì)結(jié)果的影響、比較算法的收斂速度,通過這種交互式的體驗(yàn)加深對(duì)算法的理解。 在開放教育“計(jì)算方法”課程的教學(xué)中引入GeoGebra軟件,有助于實(shí)現(xiàn)理論教學(xué)和實(shí)驗(yàn)教學(xué)的可視化,提高了教學(xué)過程的直觀性,使原本枯燥難懂的知識(shí)更易掌握,激發(fā)了學(xué)生的學(xué)習(xí)興趣,實(shí)現(xiàn)了教與學(xué)的良性互動(dòng),并潛移默化地培養(yǎng)了學(xué)生的數(shù)學(xué)思想和創(chuàng)新意識(shí),提高了開放教育人才培養(yǎng)的質(zhì)量。(二)切線法
結(jié)語(yǔ)
山東商業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào)2019年3期
——基于人民銀行濟(jì)南分行轄區(qū)的案例考察
——以“推銷原理與技巧”課程為例