陳素根
(安慶師范大學(xué)數(shù)學(xué)與計(jì)算科學(xué)學(xué)院,安徽安慶246133)
“數(shù)值分析”是高等院校數(shù)學(xué)類(lèi)專(zhuān)業(yè)的重要基礎(chǔ)課程,同時(shí)也是很多理工科專(zhuān)業(yè)的主要公共課之一,它主要研究計(jì)算機(jī)求解各種數(shù)學(xué)問(wèn)題和模型的數(shù)值計(jì)算方法及其理論與軟件實(shí)現(xiàn)[1]。“數(shù)值分析”課程是一門(mén)具有很強(qiáng)實(shí)踐性的數(shù)學(xué)課程,不僅具有數(shù)學(xué)高度抽象性特點(diǎn),而且其理論體系構(gòu)建、算法設(shè)計(jì)等思維方式也具有鮮明特點(diǎn),注重?cái)?shù)值方法和解決實(shí)際問(wèn)題的工程思想,在意方法的精確性和計(jì)算效率之間的平衡[2]。然而,傳統(tǒng)的數(shù)值分析課程教學(xué)中存在一些問(wèn)題,為此,諸多學(xué)者對(duì)數(shù)值分析課程教學(xué)方法及實(shí)驗(yàn)教學(xué)進(jìn)行了探究[3-6]。
插值方法是數(shù)值分析課程中最基本的內(nèi)容之一,主要研究用簡(jiǎn)單函數(shù)為各種離散數(shù)據(jù)建立連續(xù)的數(shù)學(xué)模型代替原有的復(fù)雜函數(shù)。然而,在教學(xué)過(guò)程中往往注重插值方法原理的講解,再加上實(shí)驗(yàn)環(huán)節(jié)不夠重視,使得學(xué)生不能熟練掌握插值方法,從而嚴(yán)重影響了數(shù)值分析課程中后續(xù)內(nèi)容的學(xué)習(xí)效果以及學(xué)生對(duì)數(shù)值分析課程的學(xué)習(xí)興趣。實(shí)際上,插值方法在工程外觀設(shè)計(jì)、經(jīng)濟(jì)數(shù)據(jù)分析與處理、圖形圖像處理等方面都有應(yīng)用,有廣泛的實(shí)際應(yīng)用背景。嘗試通過(guò)實(shí)際問(wèn)題驅(qū)動(dòng)理論教學(xué)并結(jié)合實(shí)驗(yàn)精心設(shè)計(jì)加以鞏固和提升,不僅有利于學(xué)生深刻理解插值方法的原理,而且有利于將理論與實(shí)際相結(jié)合,切實(shí)提高學(xué)生的實(shí)踐能力和創(chuàng)新能力。因此,系統(tǒng)設(shè)計(jì)插值方法的教學(xué)過(guò)程對(duì)數(shù)值分析課程的整體教學(xué)有一定的意義。本文針對(duì)Lagrange插值方法的理論教學(xué)和實(shí)驗(yàn)教學(xué)進(jìn)行設(shè)計(jì)和探討。
在插值函數(shù)中,多項(xiàng)式函數(shù)由于簡(jiǎn)單、實(shí)用而被廣泛使用。多項(xiàng)式插值問(wèn)題概述如下:給定函數(shù)f(x)在n+1個(gè)互異節(jié)點(diǎn)xi(i=0,1,2,…,n)處的函數(shù)值及其導(dǎo)數(shù)值
其中mi為自然數(shù),插值條件共有個(gè)。插值問(wèn)題就是求不超過(guò)N-1次的代數(shù)多項(xiàng)式函數(shù)H(x),使其在上述節(jié)點(diǎn)處與函數(shù)f(x)有相同的函數(shù)值和各階導(dǎo)數(shù)值,即
當(dāng)mi全為零時(shí),即插值條件沒(méi)有導(dǎo)數(shù)插值條件時(shí),上述插值問(wèn)題即為拉格朗日(Lagrange)插值或牛頓(New ton)插值或樣條(Spline)插值;當(dāng)mi不全為零時(shí),上述插值問(wèn)題即為埃爾米特(Herm ite)插值。
具體而言,n次Lagrange插值多項(xiàng)式為
其中yj=f(xj)為插值函數(shù)值,lj(x)為拉格朗日基函數(shù):
顯然,基函數(shù)滿足條件:
第一步,問(wèn)題驅(qū)動(dòng)。結(jié)合插值法在實(shí)際問(wèn)題中的應(yīng)用,講述插值法的提出、發(fā)展以及研究現(xiàn)狀,讓學(xué)生了解插值法的應(yīng)用背景,激發(fā)學(xué)生學(xué)習(xí)的興趣。許多實(shí)際問(wèn)題中都用函數(shù)來(lái)表示某種內(nèi)在聯(lián)系或規(guī)律,但不少函數(shù)只能通過(guò)實(shí)驗(yàn)和觀測(cè)來(lái)了解。比如,結(jié)合經(jīng)濟(jì)數(shù)據(jù)處理與預(yù)測(cè)講解插值問(wèn)題的提出;結(jié)合現(xiàn)代機(jī)械工業(yè)設(shè)計(jì)中利用計(jì)算機(jī)程序控制加工機(jī)械零件問(wèn)題講解插值函數(shù)問(wèn)題,根據(jù)設(shè)計(jì)可以給出零件外形曲線的某些型值點(diǎn),利用插值方法計(jì)算加工時(shí)走刀的方向和步數(shù)。通過(guò)講解Lagrange插值方法的發(fā)展史,讓學(xué)生了解該方法的來(lái)龍去脈;通過(guò)實(shí)際問(wèn)題驅(qū)動(dòng)的方式講解Lagrange插值在實(shí)際問(wèn)題中的應(yīng)用,讓學(xué)生理解該方法的應(yīng)用背景,讓枯燥復(fù)雜的理論和原理推導(dǎo)稍微有趣一點(diǎn),便于學(xué)生理解。
第二步,遞進(jìn)式教學(xué)。首先,在插值問(wèn)題提出的基礎(chǔ)上,立刻給出多項(xiàng)式插值的存在唯一性定理和插值余項(xiàng)估計(jì)定理。此時(shí)僅注重結(jié)論,不過(guò)分追求理論證明,只要求學(xué)生明白滿足插值條件的多項(xiàng)式是存在唯一的,而且插值效果的好壞是可以用插值余項(xiàng)進(jìn)行估計(jì)的。事實(shí)證明,在教學(xué)過(guò)程中一味強(qiáng)調(diào)這里的理論證明過(guò)程,讓很多學(xué)生學(xué)習(xí)興趣驟減,直接影響教學(xué)效果。其次,教學(xué)內(nèi)容由易到難,從學(xué)生們最熟悉的一次函數(shù)和二次函數(shù)講起,如:互異的兩點(diǎn)唯一確定一條直線,互異的三點(diǎn)唯一確定一條拋物線。這樣,讓學(xué)生感覺(jué)到這些內(nèi)容并不陌生,就不會(huì)畏懼新內(nèi)容的學(xué)習(xí)。此時(shí),通過(guò)對(duì)所構(gòu)造的一次函數(shù)和二次函數(shù)的化簡(jiǎn),得出關(guān)于函數(shù)值的組合表達(dá)式,進(jìn)一步引出基函數(shù)的概念,從而為講解Lagrange插值問(wèn)題打好基礎(chǔ)。關(guān)于Lagrange插值,重點(diǎn)講清(2)式的構(gòu)造思想,然后從二次、三次基函數(shù)逐漸向高次基函數(shù)歸納和推廣,并配合Matlab編程繪制基函數(shù)的圖形,這樣學(xué)生就可以更好地理解這樣構(gòu)造的多項(xiàng)式為什么就是插值的。在此基礎(chǔ)上,結(jié)合(1)式講清楚編程實(shí)現(xiàn)的流程圖,通過(guò)不斷增加插值節(jié)點(diǎn)的個(gè)數(shù),舉例讓學(xué)生體會(huì)到Lagrange插值的缺點(diǎn)。最后,分析討論Lagrange插值的優(yōu)缺點(diǎn),順利過(guò)渡到后續(xù)內(nèi)容的講解。雖然Lagrange插值的公式結(jié)構(gòu)整齊緊湊、理論分析方便,然而在計(jì)算中,當(dāng)插值點(diǎn)增加或減少一個(gè)時(shí),所對(duì)應(yīng)的基函數(shù)就需要全部重新計(jì)算,插值公式也會(huì)變化。為克服這些缺點(diǎn),就需要構(gòu)造其他插值方法,為講述New ton插值法的構(gòu)造做準(zhǔn)備。此外,當(dāng)插值節(jié)點(diǎn)個(gè)數(shù)比較多的時(shí)候,構(gòu)造的Lagrange插值多項(xiàng)式一般次數(shù)會(huì)很高,利用Matlab繪制插值曲線圖形說(shuō)明該方法的數(shù)值不穩(wěn)定,從而解釋高次Lagrange插值的龍格現(xiàn)象,為過(guò)渡到分段線性插值問(wèn)題作鋪墊。總之,通過(guò)對(duì)Lagrange插值方法優(yōu)缺點(diǎn)的分析,自然過(guò)渡到新內(nèi)容的講解,結(jié)合Matlab繪制圖形讓算法效果可視化,這種遞進(jìn)式教學(xué)設(shè)計(jì),有利于學(xué)生對(duì)Lagrange插值方法全面理解和掌握。
第三步,將科研融入教學(xué)。Lagrange插值是常用的插值方法,在工程問(wèn)題中有重要應(yīng)用。但其本質(zhì)是多項(xiàng)式插值,而且高次多項(xiàng)式插值會(huì)出現(xiàn)震蕩現(xiàn)象。事實(shí)上,(1)式可以歸結(jié)為在多項(xiàng)式函數(shù)空間Γ={1,x,x2,…,xn}中構(gòu)造多項(xiàng)式:
利用插值條件,構(gòu)造相應(yīng)的線性方程組,求解出待定系數(shù)a0,a1,a2,…,an。簡(jiǎn)單推導(dǎo),很容易得出(3)式對(duì)應(yīng)的插值問(wèn)題轉(zhuǎn)化為求解線性方程組,再將求解出的待定系數(shù)a0,a1,a2,…,an代入(3)式即可,
這樣,插值問(wèn)題的存在唯一性問(wèn)題就轉(zhuǎn)化為線性方程組解的存在唯一性問(wèn)題,此時(shí)再補(bǔ)充講解理論證明,就更便于學(xué)生理解和接受了。下面結(jié)合一個(gè)具體的例子進(jìn)行講解。一方面通過(guò)(1)式構(gòu)造Lagrange插值多項(xiàng)式Ln(x);另一方面通過(guò)(4)式求解待定系數(shù),再帶入(3)式得插值多項(xiàng)式Pn(x),比較Ln(x)和Pn(x)的結(jié)果進(jìn)一步驗(yàn)證多項(xiàng)式插值的唯一性。
例 給定插值節(jié)點(diǎn)x=[0,1,2,4];y=[1,9,23,3],利用(1)式構(gòu)造Lagrange插值多項(xiàng)式L3(x)和利用(3)式構(gòu)造插值多項(xiàng)式P3(x)。
解:先利用插值節(jié)點(diǎn)構(gòu)造3次Lagrange基函數(shù)如下:
帶入(1)式,得3次Lagrange插值多項(xiàng)式L3(x)如下:
再利用插值條件得到線性方程組如下:
如果僅僅這樣就結(jié)束課程講解,就顯得意猶未盡,為此進(jìn)一步講解插值余項(xiàng)估計(jì)問(wèn)題,從插值余項(xiàng)公式分析為何會(huì)出現(xiàn)高次多項(xiàng)式插值的龍格現(xiàn)象,又該如何克服龍格現(xiàn)象?為此,介紹兩種改進(jìn)的Lagrange插值法[7-8]。將基函數(shù)(2)式改寫(xiě)如下:
這樣就得到了一個(gè)改進(jìn)的Lagrange插值公式,(5)式就是重心Lagrange插值公式(第一型)。它的優(yōu)點(diǎn)是當(dāng)插值節(jié)點(diǎn)個(gè)數(shù)增加一個(gè)時(shí),將每個(gè)wj都除以(xj-xk+1)就可以得到新的重心權(quán)wk+1,比重新計(jì)算每一個(gè)基函數(shù)的復(fù)雜度降低一個(gè)量級(jí)。此時(shí),將(5)式用來(lái)對(duì)g(x)≡1進(jìn)行插值,可以得到:
于是,結(jié)合(5)式和(6)式,簡(jiǎn)單計(jì)算得:
這樣就得到了另一個(gè)改進(jìn)的Lagrange插值公式,(7)式就是真正的重心Lagrange插值公式(第二型),它不僅繼承了第一型(5)式容易計(jì)算的特點(diǎn),而且在計(jì)算中無(wú)需再計(jì)算l(x)。另外,如果結(jié)合切比雪夫節(jié)點(diǎn)進(jìn)行插值的話,可以很好地模擬給定的函數(shù),達(dá)到極好的數(shù)值穩(wěn)定性,克服多項(xiàng)式插值的震蕩現(xiàn)象。這樣不斷地拓展Lagrange插值多項(xiàng)式的內(nèi)涵,層層推進(jìn),將科研的思想融入教學(xué)過(guò)程,同時(shí)可以介紹一下如何通過(guò)中國(guó)知網(wǎng)、谷歌學(xué)術(shù)等方式查閱參考文獻(xiàn),引導(dǎo)學(xué)生主動(dòng)學(xué)習(xí)和探索,激發(fā)學(xué)生參與科研的熱情,培養(yǎng)學(xué)生的創(chuàng)新能力。除此之外,還可以提出一些問(wèn)題讓學(xué)生思考,如:能否在多項(xiàng)式函數(shù)空間之外的函數(shù)空間構(gòu)造插值多項(xiàng)式呢?比如在三角函數(shù)空間Γ1={1,sin x,cos x,sin2x,cos2x}、代數(shù)三角混合函數(shù)空間Γ2={1,x,sin x,cos x}或Γ3={1,x,x2,sin x,cos x}等函數(shù)空間,正面引導(dǎo)學(xué)生在不同函數(shù)空間構(gòu)造插值多項(xiàng)式,鼓勵(lì)學(xué)生動(dòng)手構(gòu)造一些新型的插值多項(xiàng)式,嘗試解決工程中圓錐曲線精確表示問(wèn)題是有意義的??傊瑢⒖蒲械乃枷肴谌氲浇虒W(xué)中,可以培養(yǎng)學(xué)生的科研思維和獨(dú)立思考能力,為今后的科研和學(xué)習(xí)奠定基礎(chǔ)。
很多學(xué)校開(kāi)設(shè)數(shù)值分析課程中往往比較重視理論的教學(xué),花費(fèi)較多的時(shí)間來(lái)講解插值方法的理論,卻忽視了實(shí)驗(yàn)教學(xué)的開(kāi)展或者沒(méi)有認(rèn)真開(kāi)展。過(guò)多的講解插值理論,往往會(huì)讓學(xué)生難以理解,從而認(rèn)為數(shù)值分析課程太難,產(chǎn)生放棄學(xué)習(xí)這門(mén)課程的念頭。事實(shí)上,實(shí)驗(yàn)教學(xué)可以非常直觀的展示插值法的效果,讓枯燥的課堂理論教學(xué)變得生動(dòng)有趣。為此,有必要對(duì)實(shí)驗(yàn)教學(xué)過(guò)程進(jìn)行合理的設(shè)計(jì)。
實(shí)驗(yàn)1 Lagrange插值基函數(shù)圖形的繪制。
實(shí)驗(yàn)?zāi)繕?biāo)是實(shí)現(xiàn)任意次Lagrange基函數(shù)圖形繪制。考慮到學(xué)生實(shí)際的編程能力,所以先從二次和三次的Lagrange基函數(shù)開(kāi)始繪制,利用程序1-1可以簡(jiǎn)單實(shí)現(xiàn)二次Lagrange基函數(shù)的繪制,效果如圖1所示。稍微修改程序1-1就可以實(shí)現(xiàn)三次Lagrange基函數(shù)的繪制,效果如圖2所示。這樣讓學(xué)生感覺(jué)挺簡(jiǎn)單的就可以觀察效果,從而主動(dòng)去動(dòng)手編程。
程序1-1 二次Lagrange基函數(shù)圖形繪制
圖1 二次Lagrange基函數(shù)圖形
圖2 三次Lagrange基函數(shù)圖形
這些程序非常簡(jiǎn)單就可以實(shí)現(xiàn),但可以發(fā)現(xiàn)一個(gè)問(wèn)題:如果插值節(jié)點(diǎn)個(gè)數(shù)較多時(shí),編寫(xiě)基函數(shù)Lj就會(huì)變得非常麻煩,顯然不能一直這樣進(jìn)行下去。此時(shí),再讓學(xué)生思考如何繪制任意次Lagrange基函數(shù)的圖形,通過(guò)建立子函數(shù)Blending_Function來(lái)實(shí)現(xiàn),程序1-2實(shí)現(xiàn)了10次Lagrange基函數(shù)圖形的繪制,圖3給出了均勻節(jié)點(diǎn)x=[0,1,2,3,4,5,6,7,8,9,10]的10次Lagrange基函數(shù)圖形,圖4給出了非均勻節(jié)點(diǎn)x=[0,1,3,4,6,8,9,10,13,14,15]的10次Lagrange基函數(shù)圖形。這樣,只要改變插值節(jié)點(diǎn)x的輸入,利用程序1-2可以實(shí)現(xiàn)任意次基函數(shù)圖形繪制。通過(guò)這種遞進(jìn)式實(shí)驗(yàn)設(shè)計(jì),由易到難,讓學(xué)生理解Lagrange基函數(shù)的構(gòu)造方式及其優(yōu)缺點(diǎn),培養(yǎng)學(xué)生通過(guò)函數(shù)調(diào)用實(shí)現(xiàn)編程的能力。同時(shí),在程序?qū)崿F(xiàn)過(guò)程中通過(guò)pause命令使得在繪制每一個(gè)基函數(shù)圖形的過(guò)程中停頓一會(huì)兒,有利于學(xué)生觀察相應(yīng)基函數(shù)的圖形,通過(guò)仔細(xì)觀察基函數(shù)的圖形來(lái)理解高次Lagrange插值為什么會(huì)出現(xiàn)龍格現(xiàn)象。
程序1-2 n次Lagrange基函數(shù)圖形繪制
圖3 均勻節(jié)點(diǎn)10次Lagrange基函數(shù)圖形
圖4 非均勻節(jié)點(diǎn)10次Lagrange基函數(shù)圖形
實(shí)驗(yàn)2 Lagrange插值曲線的繪制。
這個(gè)實(shí)驗(yàn)的目標(biāo)是實(shí)現(xiàn)Lagrange插值曲線繪制。先分析Lagrange插值表達(dá)式(1),發(fā)現(xiàn)實(shí)現(xiàn)圖形繪制的主要有兩個(gè)問(wèn)題:一個(gè)是基函數(shù)計(jì)算,另一個(gè)是求和計(jì)算。在此基礎(chǔ)上,圖5給出了Lagrange插值算法實(shí)現(xiàn)的流程圖5。
圖5 Lagrange插值算法流程圖
程序2-1 Lagrange插值曲線繪制
根據(jù)流程圖,程序2-1實(shí)現(xiàn)了Lagrange插值曲線的繪制,然后通過(guò)改變插值節(jié)點(diǎn)序列x和y的輸入,運(yùn)行程序2-1可以不斷實(shí)現(xiàn)Lagrange插值曲線的繪制,比較實(shí)驗(yàn)結(jié)果來(lái)觀察是否出現(xiàn)震蕩現(xiàn)象。圖6左圖給出了輸入x=[0,1,4,9,16,25,36,49,64],y=[0,1,2,3,4,5,6,7,8]時(shí)的實(shí)驗(yàn)結(jié)果,右圖給出了輸入時(shí)的實(shí)驗(yàn)結(jié)果。
圖6 Lagrange插值曲線圖形
觀察圖6結(jié)果不難發(fā)現(xiàn),Lagrange插值多項(xiàng)式出現(xiàn)了震蕩現(xiàn)象。為此,針對(duì)圖6右圖中的輸入函數(shù),選取切比雪夫點(diǎn),其對(duì)應(yīng)的重心權(quán)為取n=14,利用切比雪夫點(diǎn)代替原始輸入點(diǎn)x,再利用改進(jìn)的Lagrange插值公式(7)進(jìn)行實(shí)驗(yàn),程序2-2實(shí)現(xiàn)了插值曲線繪制,圖7給出了實(shí)驗(yàn)結(jié)果。觀察實(shí)驗(yàn)結(jié)果,并與圖6中右圖進(jìn)行比較,顯然已經(jīng)沒(méi)有出現(xiàn)插值的震蕩現(xiàn)象了。此時(shí),再次選取n=50,重新利用程序2-2實(shí)現(xiàn)50次重心Lagrange插值,圖8給出了實(shí)驗(yàn)結(jié)果,進(jìn)一步說(shuō)明了改進(jìn)的Lagrange插值是可以克服多項(xiàng)式插值震蕩現(xiàn)象的。
程序2-2 重心Lagrange插值曲線繪制
圖7 14次重心Lagrange插值曲線圖形
圖8 50次重心Lagrange插值曲線圖形
數(shù)值分析課程是一門(mén)具有很強(qiáng)理論性與實(shí)踐性的課程,理論教學(xué)與實(shí)驗(yàn)教學(xué)必須密切配合才能讓學(xué)生更容易理解和掌握。通過(guò)對(duì)Lagrange插值方法的理論教學(xué)與實(shí)驗(yàn)教學(xué)進(jìn)行精心設(shè)計(jì),有利于學(xué)生系統(tǒng)掌握Lagrange插值方法的原理和應(yīng)用背景,不僅為學(xué)習(xí)數(shù)值分析后續(xù)內(nèi)容打下良好基礎(chǔ),而且可以激發(fā)學(xué)生學(xué)習(xí)這么課程的學(xué)習(xí)興趣,培養(yǎng)學(xué)生的動(dòng)手實(shí)踐能力和創(chuàng)新能力。