王先傳 ,江 巖 ,趙 佳 ,張 巖
(阜陽(yáng)師范學(xué)院 a.計(jì)算機(jī)與信息工程學(xué)院;b.數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,安徽 阜陽(yáng) 236037)
基于切比雪夫多項(xiàng)式的函數(shù)插值逼近
王先傳a,江 巖b,趙 佳a(bǔ),張 巖a
(阜陽(yáng)師范學(xué)院 a.計(jì)算機(jī)與信息工程學(xué)院;b.數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,安徽 阜陽(yáng) 236037)
函數(shù)插值逼近經(jīng)常應(yīng)用于工程和技術(shù)領(lǐng)域。逼近效果不僅受算法影響,還與采用何種函數(shù)逼近有關(guān)。本文首先給出切比雪夫多項(xiàng)式的定義,討論了其有關(guān)性質(zhì)。而后重點(diǎn)論述了如何基于切比雪夫多項(xiàng)式的函數(shù)插值逼近,同時(shí)給出相應(yīng)的Python語(yǔ)言代碼。
插值逼近;Python;切比雪夫多項(xiàng)式;龍格現(xiàn)象
在許多工程和技術(shù)領(lǐng)域經(jīng)常用到函數(shù)逼近、插值與擬合算法。除了最常用的最小二乘法,函數(shù)插值逼近方法還有構(gòu)造有理函數(shù)[1]、神經(jīng)網(wǎng)絡(luò)[2]等。但這些方法實(shí)現(xiàn)起來(lái)比較復(fù)雜,而且比較效果也不夠理想。另一方面,近年來(lái)切比雪夫多項(xiàng)式無(wú)論在理論還是在應(yīng)用方面都也得到了較廣泛的研究[3-8]。同時(shí),伴隨著數(shù)據(jù)科學(xué)的發(fā)展,Python語(yǔ)言也得到空前的發(fā)展。為此,本文將討論如何基于切比雪夫多項(xiàng)式運(yùn)用Python語(yǔ)言進(jìn)行函數(shù)插值逼近。
由Guido van Rossum 1989年發(fā)明的Python是一種解釋型、面向?qū)ο蟆⒖缙脚_(tái)、動(dòng)態(tài)高級(jí)編程語(yǔ)言[9]。隨著大數(shù)據(jù)的發(fā)展,目前它已成為當(dāng)今世界最受歡迎的計(jì)算生態(tài)語(yǔ)言。由于該語(yǔ)言簡(jiǎn)潔、易讀、易學(xué)、好用,開(kāi)設(shè)該語(yǔ)言的高校愈來(lái)愈多。
目前,比較流行的Python語(yǔ)言版本有Python 2.7和Python 3,但Python 3向下不兼容,即它是Python語(yǔ)言的現(xiàn)在和未來(lái)。為此,本文以它為平臺(tái)進(jìn)行相關(guān)編程。與Matlab不同,Python的開(kāi)發(fā)環(huán)境有多種,如非集成開(kāi)發(fā)環(huán)境有Anaconda和IPython Notebook等,集成開(kāi)發(fā)環(huán)境有Spyder和PyCharm等。本文將以Anaconda為計(jì)算平臺(tái)。
切比雪夫多項(xiàng)式是以俄國(guó)著名數(shù)學(xué)家切比雪夫(Tschebyscheff,1821-1894)命名的重要特殊函數(shù),源于多倍角的余弦函數(shù)和余弦函數(shù)的展開(kāi)式,分為第一類(lèi)和第二類(lèi)切比雪夫多項(xiàng)式。本文所用切比雪夫多項(xiàng)式屬于第一類(lèi)。
切比雪夫多項(xiàng)式的定義如下:
定義1[10,11]稱(chēng)滿(mǎn)足Tn(x)=cos(narccosx),其中,n∈N,x∈R,且|x|≤1的{Tn(x)}為第一類(lèi)切比雪夫多項(xiàng)式序列。Tn(x)稱(chēng)為第n個(gè)第一類(lèi)切比雪夫多項(xiàng)式。令arccosx=θ,則cosθ=x。前8個(gè)第一類(lèi)切比雪夫多項(xiàng)式如下:
可以看出,它們都是最高項(xiàng)系數(shù)為2n-1、次數(shù)為n、系數(shù)符號(hào)正負(fù)相間、最小值為-1最大值為1的整系數(shù)多項(xiàng)式,其圖像如圖1所示。
圖1 0至7次切比雪夫多項(xiàng)式的圖像
性質(zhì)1[10,11](奇偶性)切比雪夫多項(xiàng)式滿(mǎn)足
當(dāng)n為偶數(shù)時(shí),Tn(x)只含有x的偶次冪項(xiàng),即Tn(x)為偶函數(shù);當(dāng)n為奇數(shù)時(shí),Tn(x)只含有x的奇次冪項(xiàng),即Tn(x)為奇函數(shù)。
性質(zhì)2[10,11](遞推公式)Tn(x)滿(mǎn)足如下三個(gè)遞推公式:
其詳細(xì)證明請(qǐng)參見(jiàn)文獻(xiàn)[10]。
性質(zhì)3[10,11](零點(diǎn))Tn(x)在區(qū)間(1,1)存在n個(gè)不同的零點(diǎn),n>0。這些零點(diǎn)為
并稱(chēng)這些零點(diǎn)為切比雪夫節(jié)點(diǎn)。例如,在(1,1)內(nèi)T1(x)=x有一個(gè)節(jié)點(diǎn)x=0;T2(x)=2x2-1有2個(gè)零點(diǎn),即即本文正是利用節(jié)點(diǎn)進(jìn)行多項(xiàng)式插值。
性質(zhì)4[10,11](正交性)m≠n。即任意兩個(gè)不同切比雪夫多項(xiàng)式之積在上的定積分等于0。
利用切比雪夫多項(xiàng)式的正交性,(-1,1)內(nèi)的任意一個(gè)n次多項(xiàng)式f(x)可以表示為多個(gè)切比雪夫多項(xiàng)式的加權(quán)和,即其中
總之,切比雪夫多項(xiàng)式的這些特點(diǎn)表現(xiàn)了其獨(dú)特的數(shù)學(xué)美,使它成為計(jì)算數(shù)學(xué)中重要函數(shù)。
下面運(yùn)用Python語(yǔ)言,展示如何利用切比雪夫多項(xiàng)式實(shí)現(xiàn)函數(shù)插值逼近。
Anaconda是網(wǎng)頁(yè)版Python語(yǔ)言編程環(huán)境。首先從https://www.continuum.io/downloads下載Anaconda。該網(wǎng)站提供 Windows、Linux和 Mac版的Anaconda軟件,本文選擇Windows版的Python 3.6版。而后完成軟件安裝并打開(kāi)該軟件。打開(kāi)后運(yùn)行Juyper,再選擇New->Python 3。在In[]后的編輯框中輸入1+2,而后同時(shí)按下Enter和Shift鍵運(yùn)行程序,如果顯示Out[1]及其后的運(yùn)算結(jié)果為3,說(shuō)明軟件安裝成功、測(cè)試結(jié)果正確。
(1)導(dǎo)入必要的庫(kù)和函數(shù)。如numpy庫(kù)(用于科學(xué)計(jì)算)、pylab 庫(kù)(用于作圖)以及 Polynomial函數(shù)和Chebyshev函數(shù)。
(2)定義待逼近的函數(shù)。
(3)定義切比雪夫多項(xiàng)式次數(shù),并計(jì)算其節(jié)點(diǎn)即插值取樣點(diǎn)。
(4)調(diào)用Chebyshev的fit函數(shù)生成插值點(diǎn)的函數(shù)值。
(5)計(jì)算最大誤差。
(6)繪制插值和逼近結(jié)果。
從結(jié)果可以看出采用等間隔取樣點(diǎn)進(jìn)行函數(shù)插值的最大誤差為2.3536,而采用切比雪夫節(jié)點(diǎn)進(jìn)行函數(shù)插值的最大誤差為0.1175。
插值結(jié)果如圖3所示,可以看出,采用等間隔插值時(shí)插值多項(xiàng)式的兩端有非常大的震蕩。該現(xiàn)象被稱(chēng)為龍格現(xiàn)象,n越大龍格現(xiàn)象越明顯。而采用非等間隔的切比雪夫節(jié)點(diǎn)插值時(shí)插值多項(xiàng)式的龍格現(xiàn)象明顯減少,而且n越大龍格現(xiàn)象越小。
圖2 展示切比雪夫節(jié)點(diǎn)和龍格現(xiàn)象的Python程序
圖3 Polynomial函數(shù)和Chebyshev函數(shù)的插值結(jié)果及其龍格現(xiàn)象
由3.2節(jié)可知,切比雪夫多項(xiàng)式進(jìn)行函數(shù)插值的誤差比一般多項(xiàng)式要小許多,而且插值的整體效果也好。下面用一個(gè)例子來(lái)說(shuō)明切比雪夫插值的優(yōu)勢(shì)。
對(duì)g(x)=sin 25(x-1)2+sin32(x-2)在100個(gè)切比雪夫節(jié)點(diǎn)上分別用Python的Polynomial和Chebyshev插值,程序如圖4所示??梢钥闯觯叩膮^(qū)別僅在于計(jì)算插值點(diǎn)函數(shù)值時(shí)所用的函數(shù)不同。運(yùn)行程序時(shí),使用Polynomial進(jìn)行插值時(shí)會(huì)發(fā)生“RankWarning:The fit may be poorly conditioned”警告。也就是說(shuō)使用該方法進(jìn)行該函數(shù)的插值擬合,結(jié)果不理想,如圖5所示。可以看出,用Polynomial插值時(shí)所得多項(xiàng)式不能經(jīng)過(guò)所有插值點(diǎn),而使用Chebyshev進(jìn)行插值時(shí)所得多項(xiàng)式經(jīng)過(guò)所有插值點(diǎn)。兩種不同插值的最大誤差分別為1.1951和6.4757×10-9。結(jié)合圖4可知,其原因只是在于進(jìn)行插值時(shí)所采用的插值方法不同。
圖4 Polynomial函數(shù)和Chebyshev函數(shù)插值的Python代碼
圖5 Polynomial函數(shù)和Chebyshev函數(shù)的插值結(jié)果
如前所述,切比雪夫多項(xiàng)式是定義在區(qū)間[-1,1]上的正交多項(xiàng)式,因此只有在該區(qū)間才能對(duì)待逼近函數(shù)進(jìn)行正確插值逼近。為對(duì)任意區(qū)間上的函數(shù)都能正確插值逼近,需要對(duì)待插值區(qū)間進(jìn)行放縮和平移變換。在Python語(yǔ)言中可通過(guò)參數(shù)domain指定待插值區(qū)間。例如對(duì)在區(qū)間[-8,2]上采用切比雪夫多項(xiàng)式插值逼近。其相關(guān)代碼如圖6所示,需要注意的是要將Chebyshev的basis和fit函數(shù)中的domain參數(shù)都設(shè)置為區(qū)間[-8,2],同時(shí)linspace函數(shù)也要指定在該區(qū)間上。n分別取20,40,60和80對(duì)h(x)進(jìn)行插值逼近時(shí)的運(yùn)行結(jié)果如圖7所示。可以看出,n值越大,插值逼近效果越好。但n越大計(jì)算量也就越大。因此n的選擇需要根據(jù)具體情況而定。
本文首先簡(jiǎn)單介紹了Python語(yǔ)言,而后給出了切比雪夫多項(xiàng)式的定義,討論了其奇偶性、正交性等性質(zhì)。在此基礎(chǔ)上,詳細(xì)討論了如何基于切比雪夫多項(xiàng)式在區(qū)間[-1,1]上進(jìn)行函數(shù)插值逼近,對(duì)采用一般多項(xiàng)式插值逼近和切比雪夫多項(xiàng)式插值逼近進(jìn)行了比較,最好討論了如何對(duì)定義在一般區(qū)間上的函數(shù)進(jìn)行插值逼近。結(jié)果表明切比雪夫多項(xiàng)式插值逼近明顯優(yōu)于等間隔插值逼近和一般多項(xiàng)式插值逼近,而且所用切比雪夫多項(xiàng)式次數(shù)越高,逼近效果越好。同時(shí),也可以看出使用Python語(yǔ)言處理函數(shù)插值逼近這樣復(fù)雜問(wèn)題的簡(jiǎn)潔性。
圖6 一般區(qū)間上的Chebyshev函數(shù)插值逼近Python代碼
圖7 不同n值對(duì)一般區(qū)間上Chebyshev函數(shù)插值逼近的影響
[1]孫定浩,趙長(zhǎng)春.構(gòu)建有理函數(shù)逼近式的一種新方法[J].空間控制技術(shù)與應(yīng)用,2016,42(1):57-62.
[2]岑紅蕾,魯 敏,聶 晶.基于BP神經(jīng)網(wǎng)絡(luò)的非線(xiàn)性函數(shù)逼近仿真研究[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2015(1):52-55.
[3]凌明燦,吳 康.第一類(lèi)切比雪夫多項(xiàng)式方程的重根規(guī)律[J].五邑大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,27(2):13-15.
[4]傅 翀,雷 斌,韓 冰,等.基于切比雪夫多項(xiàng)式的HRWS星載SAR成像算法[J].國(guó)外電子測(cè)量技術(shù),2015,34(8):40-46.
[5]侯育星,陳士超,唐 禹,等.基于切比雪夫多項(xiàng)式的新形式調(diào)頻變標(biāo)合成孔徑雷達(dá)成像算法[J].電子與信息學(xué)報(bào),2014,36(11):2646-2651.
[6]劉 亮.有限域切比雪夫多項(xiàng)式算法性能測(cè)試與分析[J].中國(guó)傳媒大學(xué)學(xué)報(bào)(自然科學(xué)版),2012,19(4):54-58.
[7]Rajesh K P,Suraj S,Koushlendra K S,et al.An approximate method for Abel inversion using Chebyshev polynomials[J].Applied Mathematics and Computation,2014,237(15):120-132.
[8]Mesk M,Zahaf M B.A new characterization of ultraspherical,Hermite,and Chebyshev polynomials of the first kind[J].Journal of Mathematical Analysis and Applications,2017,448(2):1147-1162.
[9]張若愚.Python科學(xué)計(jì)算[M].2版.北京:清華大學(xué)出版社,2016:1-5.
[10]劉式適,劉式達(dá).特殊函數(shù)[M].北京:氣象出版社,1988:304-320.
[11]Mason J C,Handscomb D C.Chebyshev polynomials[M].New York:CRC Press Company,2003:1-50.
Function interpolation and approximation based on Chebyshev polynomials
WANG Xian-chuana,JIANG Yanb,ZHAO Jiaa,ZHANG Yana
(a.School of Computer and Information Engineering;b.School of Mathematics and Statistics,Fuyang Normal University,Fuyang Anhui236037,China)
Function interpolation and approximation is often applied to engineering and technology.The approximation effects are affected not only by algorithms but also by adopted functions.This paper introduces Chebyshev polynomials and their properties.And then it focuses on discussing how to approximate a function based on Chebyshev polynomials.Meanwhile,it also shows the relevant codes in Python.
interpolation and approximation;Python;Chebyshev polynomials;Runge phenomenon
O174文獻(xiàn)識(shí)別碼:A
1004-4329(2017)04-007-05
10.14096/j.cnki.cn34-1069/n/1004-4329(2017)04-04-007-05
2017-09-12
國(guó)家級(jí)大學(xué)生創(chuàng)新項(xiàng)目(201610371010);阜陽(yáng)師范學(xué)院質(zhì)量工程項(xiàng)目(2014JXTD01);阜陽(yáng)師范學(xué)院橫向課題(XDHX2016021);阜陽(yáng)師范學(xué)院校級(jí)重點(diǎn)科研(2017FSKJ05ZD)資助。
王先傳(1983- ),男,博士,講師,研究方向:數(shù)據(jù)挖掘、自然語(yǔ)言處理。