王先傳 ,江 巖 ,趙 佳 ,張 巖
(阜陽師范學(xué)院 a.計(jì)算機(jī)與信息工程學(xué)院;b.數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,安徽 阜陽 236037)
基于切比雪夫多項(xiàng)式的函數(shù)插值逼近
王先傳a,江 巖b,趙 佳a(bǔ),張 巖a
(阜陽師范學(xué)院 a.計(jì)算機(jī)與信息工程學(xué)院;b.數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,安徽 阜陽 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語言代碼。
插值逼近;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)起來比較復(fù)雜,而且比較效果也不夠理想。另一方面,近年來切比雪夫多項(xiàng)式無論在理論還是在應(yīng)用方面都也得到了較廣泛的研究[3-8]。同時(shí),伴隨著數(shù)據(jù)科學(xué)的發(fā)展,Python語言也得到空前的發(fā)展。為此,本文將討論如何基于切比雪夫多項(xiàng)式運(yùn)用Python語言進(jìn)行函數(shù)插值逼近。
由Guido van Rossum 1989年發(fā)明的Python是一種解釋型、面向?qū)ο?、跨平臺(tái)、動(dòng)態(tài)高級(jí)編程語言[9]。隨著大數(shù)據(jù)的發(fā)展,目前它已成為當(dāng)今世界最受歡迎的計(jì)算生態(tài)語言。由于該語言簡潔、易讀、易學(xué)、好用,開設(shè)該語言的高校愈來愈多。
目前,比較流行的Python語言版本有Python 2.7和Python 3,但Python 3向下不兼容,即它是Python語言的現(xiàn)在和未來。為此,本文以它為平臺(tái)進(jìn)行相關(guān)編程。與Matlab不同,Python的開發(fā)環(huán)境有多種,如非集成開發(fā)環(huán)境有Anaconda和IPython Notebook等,集成開發(fā)環(huán)境有Spyder和PyCharm等。本文將以Anaconda為計(jì)算平臺(tái)。
切比雪夫多項(xiàng)式是以俄國著名數(shù)學(xué)家切比雪夫(Tschebyscheff,1821-1894)命名的重要特殊函數(shù),源于多倍角的余弦函數(shù)和余弦函數(shù)的展開式,分為第一類和第二類切比雪夫多項(xiàng)式。本文所用切比雪夫多項(xiàng)式屬于第一類。
切比雪夫多項(xiàng)式的定義如下:
定義1[10,11]稱滿足Tn(x)=cos(narccosx),其中,n∈N,x∈R,且|x|≤1的{Tn(x)}為第一類切比雪夫多項(xiàng)式序列。Tn(x)稱為第n個(gè)第一類切比雪夫多項(xiàng)式。令arccosx=θ,則cosθ=x。前8個(gè)第一類切比雪夫多項(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)式滿足
當(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)滿足如下三個(gè)遞推公式:
其詳細(xì)證明請參見文獻(xiàn)[10]。
性質(zhì)3[10,11](零點(diǎn))Tn(x)在區(qū)間(1,1)存在n個(gè)不同的零點(diǎn),n>0。這些零點(diǎn)為
并稱這些零點(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語言,展示如何利用切比雪夫多項(xiàng)式實(shí)現(xiàn)函數(shù)插值逼近。
Anaconda是網(wǎng)頁版Python語言編程環(huán)境。首先從https://www.continuum.io/downloads下載Anaconda。該網(wǎng)站提供 Windows、Linux和 Mac版的Anaconda軟件,本文選擇Windows版的Python 3.6版。而后完成軟件安裝并打開該軟件。打開后運(yùn)行Juyper,再選擇New->Python 3。在In[]后的編輯框中輸入1+2,而后同時(shí)按下Enter和Shift鍵運(yùn)行程序,如果顯示Out[1]及其后的運(yùn)算結(jié)果為3,說明軟件安裝成功、測試結(jié)果正確。
(1)導(dǎo)入必要的庫和函數(shù)。如numpy庫(用于科學(xué)計(jì)算)、pylab 庫(用于作圖)以及 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)象被稱為龍格現(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è)例子來說明切比雪夫插值的優(yōu)勢。
對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”警告。也就是說使用該方法進(jìn)行該函數(shù)的插值擬合,結(jié)果不理想,如圖5所示。可以看出,用Polynomial插值時(shí)所得多項(xiàng)式不能經(jīng)過所有插值點(diǎn),而使用Chebyshev進(jìn)行插值時(shí)所得多項(xiàng)式經(jīng)過所有插值點(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ū)間才能對待逼近函數(shù)進(jìn)行正確插值逼近。為對任意區(qū)間上的函數(shù)都能正確插值逼近,需要對待插值區(qū)間進(jìn)行放縮和平移變換。在Python語言中可通過參數(shù)domain指定待插值區(qū)間。例如對在區(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對h(x)進(jìn)行插值逼近時(shí)的運(yùn)行結(jié)果如圖7所示??梢钥闯?,n值越大,插值逼近效果越好。但n越大計(jì)算量也就越大。因此n的選擇需要根據(jù)具體情況而定。
本文首先簡單介紹了Python語言,而后給出了切比雪夫多項(xiàng)式的定義,討論了其奇偶性、正交性等性質(zhì)。在此基礎(chǔ)上,詳細(xì)討論了如何基于切比雪夫多項(xiàng)式在區(qū)間[-1,1]上進(jìn)行函數(shù)插值逼近,對采用一般多項(xiàng)式插值逼近和切比雪夫多項(xiàng)式插值逼近進(jìn)行了比較,最好討論了如何對定義在一般區(qū)間上的函數(shù)進(jìn)行插值逼近。結(jié)果表明切比雪夫多項(xiàng)式插值逼近明顯優(yōu)于等間隔插值逼近和一般多項(xiàng)式插值逼近,而且所用切比雪夫多項(xiàng)式次數(shù)越高,逼近效果越好。同時(shí),也可以看出使用Python語言處理函數(shù)插值逼近這樣復(fù)雜問題的簡潔性。
圖6 一般區(qū)間上的Chebyshev函數(shù)插值逼近Python代碼
圖7 不同n值對一般區(qū)間上Chebyshev函數(shù)插值逼近的影響
[1]孫定浩,趙長春.構(gòu)建有理函數(shù)逼近式的一種新方法[J].空間控制技術(shù)與應(yīng)用,2016,42(1):57-62.
[2]岑紅蕾,魯 敏,聶 晶.基于BP神經(jīng)網(wǎng)絡(luò)的非線性函數(shù)逼近仿真研究[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2015(1):52-55.
[3]凌明燦,吳 康.第一類切比雪夫多項(xiàng)式方程的重根規(guī)律[J].五邑大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,27(2):13-15.
[4]傅 翀,雷 斌,韓 冰,等.基于切比雪夫多項(xiàng)式的HRWS星載SAR成像算法[J].國外電子測量技術(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)式算法性能測試與分析[J].中國傳媒大學(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
國家級(jí)大學(xué)生創(chuàng)新項(xiàng)目(201610371010);阜陽師范學(xué)院質(zhì)量工程項(xiàng)目(2014JXTD01);阜陽師范學(xué)院橫向課題(XDHX2016021);阜陽師范學(xué)院校級(jí)重點(diǎn)科研(2017FSKJ05ZD)資助。
王先傳(1983- ),男,博士,講師,研究方向:數(shù)據(jù)挖掘、自然語言處理。