王先傳 ,江 巖 ,趙 佳 ,張 巖
(阜陽師范學(xué)院 a.計算機與信息工程學(xué)院;b.數(shù)學(xué)與統(tǒng)計學(xué)院,安徽 阜陽 236037)
基于切比雪夫多項式的函數(shù)插值逼近
王先傳a,江 巖b,趙 佳a,張 巖a
(阜陽師范學(xué)院 a.計算機與信息工程學(xué)院;b.數(shù)學(xué)與統(tǒng)計學(xué)院,安徽 阜陽 236037)
函數(shù)插值逼近經(jīng)常應(yīng)用于工程和技術(shù)領(lǐng)域。逼近效果不僅受算法影響,還與采用何種函數(shù)逼近有關(guān)。本文首先給出切比雪夫多項式的定義,討論了其有關(guān)性質(zhì)。而后重點論述了如何基于切比雪夫多項式的函數(shù)插值逼近,同時給出相應(yīng)的Python語言代碼。
插值逼近;Python;切比雪夫多項式;龍格現(xiàn)象
在許多工程和技術(shù)領(lǐng)域經(jīng)常用到函數(shù)逼近、插值與擬合算法。除了最常用的最小二乘法,函數(shù)插值逼近方法還有構(gòu)造有理函數(shù)[1]、神經(jīng)網(wǎng)絡(luò)[2]等。但這些方法實現(xiàn)起來比較復(fù)雜,而且比較效果也不夠理想。另一方面,近年來切比雪夫多項式無論在理論還是在應(yīng)用方面都也得到了較廣泛的研究[3-8]。同時,伴隨著數(shù)據(jù)科學(xué)的發(fā)展,Python語言也得到空前的發(fā)展。為此,本文將討論如何基于切比雪夫多項式運用Python語言進行函數(shù)插值逼近。
由Guido van Rossum 1989年發(fā)明的Python是一種解釋型、面向?qū)ο?、跨平臺、動態(tài)高級編程語言[9]。隨著大數(shù)據(jù)的發(fā)展,目前它已成為當(dāng)今世界最受歡迎的計算生態(tài)語言。由于該語言簡潔、易讀、易學(xué)、好用,開設(shè)該語言的高校愈來愈多。
目前,比較流行的Python語言版本有Python 2.7和Python 3,但Python 3向下不兼容,即它是Python語言的現(xiàn)在和未來。為此,本文以它為平臺進行相關(guān)編程。與Matlab不同,Python的開發(fā)環(huán)境有多種,如非集成開發(fā)環(huán)境有Anaconda和IPython Notebook等,集成開發(fā)環(huán)境有Spyder和PyCharm等。本文將以Anaconda為計算平臺。
切比雪夫多項式是以俄國著名數(shù)學(xué)家切比雪夫(Tschebyscheff,1821-1894)命名的重要特殊函數(shù),源于多倍角的余弦函數(shù)和余弦函數(shù)的展開式,分為第一類和第二類切比雪夫多項式。本文所用切比雪夫多項式屬于第一類。
切比雪夫多項式的定義如下:
定義1[10,11]稱滿足Tn(x)=cos(narccosx),其中,n∈N,x∈R,且|x|≤1的{Tn(x)}為第一類切比雪夫多項式序列。Tn(x)稱為第n個第一類切比雪夫多項式。令arccosx=θ,則cosθ=x。前8個第一類切比雪夫多項式如下:
可以看出,它們都是最高項系數(shù)為2n-1、次數(shù)為n、系數(shù)符號正負相間、最小值為-1最大值為1的整系數(shù)多項式,其圖像如圖1所示。
圖1 0至7次切比雪夫多項式的圖像
性質(zhì)1[10,11](奇偶性)切比雪夫多項式滿足
當(dāng)n為偶數(shù)時,Tn(x)只含有x的偶次冪項,即Tn(x)為偶函數(shù);當(dāng)n為奇數(shù)時,Tn(x)只含有x的奇次冪項,即Tn(x)為奇函數(shù)。
性質(zhì)2[10,11](遞推公式)Tn(x)滿足如下三個遞推公式:
其詳細證明請參見文獻[10]。
性質(zhì)3[10,11](零點)Tn(x)在區(qū)間(1,1)存在n個不同的零點,n>0。這些零點為
并稱這些零點為切比雪夫節(jié)點。例如,在(1,1)內(nèi)T1(x)=x有一個節(jié)點x=0;T2(x)=2x2-1有2個零點,即即本文正是利用節(jié)點進行多項式插值。
性質(zhì)4[10,11](正交性)m≠n。即任意兩個不同切比雪夫多項式之積在上的定積分等于0。
利用切比雪夫多項式的正交性,(-1,1)內(nèi)的任意一個n次多項式f(x)可以表示為多個切比雪夫多項式的加權(quán)和,即其中
總之,切比雪夫多項式的這些特點表現(xiàn)了其獨特的數(shù)學(xué)美,使它成為計算數(shù)學(xué)中重要函數(shù)。
下面運用Python語言,展示如何利用切比雪夫多項式實現(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版。而后完成軟件安裝并打開該軟件。打開后運行Juyper,再選擇New->Python 3。在In[]后的編輯框中輸入1+2,而后同時按下Enter和Shift鍵運行程序,如果顯示Out[1]及其后的運算結(jié)果為3,說明軟件安裝成功、測試結(jié)果正確。
(1)導(dǎo)入必要的庫和函數(shù)。如numpy庫(用于科學(xué)計算)、pylab 庫(用于作圖)以及 Polynomial函數(shù)和Chebyshev函數(shù)。
(2)定義待逼近的函數(shù)。
(3)定義切比雪夫多項式次數(shù),并計算其節(jié)點即插值取樣點。
(4)調(diào)用Chebyshev的fit函數(shù)生成插值點的函數(shù)值。
(5)計算最大誤差。
(6)繪制插值和逼近結(jié)果。
從結(jié)果可以看出采用等間隔取樣點進行函數(shù)插值的最大誤差為2.3536,而采用切比雪夫節(jié)點進行函數(shù)插值的最大誤差為0.1175。
插值結(jié)果如圖3所示,可以看出,采用等間隔插值時插值多項式的兩端有非常大的震蕩。該現(xiàn)象被稱為龍格現(xiàn)象,n越大龍格現(xiàn)象越明顯。而采用非等間隔的切比雪夫節(jié)點插值時插值多項式的龍格現(xiàn)象明顯減少,而且n越大龍格現(xiàn)象越小。
圖2 展示切比雪夫節(jié)點和龍格現(xiàn)象的Python程序
圖3 Polynomial函數(shù)和Chebyshev函數(shù)的插值結(jié)果及其龍格現(xiàn)象
由3.2節(jié)可知,切比雪夫多項式進行函數(shù)插值的誤差比一般多項式要小許多,而且插值的整體效果也好。下面用一個例子來說明切比雪夫插值的優(yōu)勢。
對g(x)=sin 25(x-1)2+sin32(x-2)在100個切比雪夫節(jié)點上分別用Python的Polynomial和Chebyshev插值,程序如圖4所示??梢钥闯觯叩膮^(qū)別僅在于計算插值點函數(shù)值時所用的函數(shù)不同。運行程序時,使用Polynomial進行插值時會發(fā)生“RankWarning:The fit may be poorly conditioned”警告。也就是說使用該方法進行該函數(shù)的插值擬合,結(jié)果不理想,如圖5所示??梢钥闯觯肞olynomial插值時所得多項式不能經(jīng)過所有插值點,而使用Chebyshev進行插值時所得多項式經(jīng)過所有插值點。兩種不同插值的最大誤差分別為1.1951和6.4757×10-9。結(jié)合圖4可知,其原因只是在于進行插值時所采用的插值方法不同。
圖4 Polynomial函數(shù)和Chebyshev函數(shù)插值的Python代碼
圖5 Polynomial函數(shù)和Chebyshev函數(shù)的插值結(jié)果
如前所述,切比雪夫多項式是定義在區(qū)間[-1,1]上的正交多項式,因此只有在該區(qū)間才能對待逼近函數(shù)進行正確插值逼近。為對任意區(qū)間上的函數(shù)都能正確插值逼近,需要對待插值區(qū)間進行放縮和平移變換。在Python語言中可通過參數(shù)domain指定待插值區(qū)間。例如對在區(qū)間[-8,2]上采用切比雪夫多項式插值逼近。其相關(guān)代碼如圖6所示,需要注意的是要將Chebyshev的basis和fit函數(shù)中的domain參數(shù)都設(shè)置為區(qū)間[-8,2],同時linspace函數(shù)也要指定在該區(qū)間上。n分別取20,40,60和80對h(x)進行插值逼近時的運行結(jié)果如圖7所示??梢钥闯?,n值越大,插值逼近效果越好。但n越大計算量也就越大。因此n的選擇需要根據(jù)具體情況而定。
本文首先簡單介紹了Python語言,而后給出了切比雪夫多項式的定義,討論了其奇偶性、正交性等性質(zhì)。在此基礎(chǔ)上,詳細討論了如何基于切比雪夫多項式在區(qū)間[-1,1]上進行函數(shù)插值逼近,對采用一般多項式插值逼近和切比雪夫多項式插值逼近進行了比較,最好討論了如何對定義在一般區(qū)間上的函數(shù)進行插值逼近。結(jié)果表明切比雪夫多項式插值逼近明顯優(yōu)于等間隔插值逼近和一般多項式插值逼近,而且所用切比雪夫多項式次數(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]凌明燦,吳 康.第一類切比雪夫多項式方程的重根規(guī)律[J].五邑大學(xué)學(xué)報(自然科學(xué)版),2013,27(2):13-15.
[4]傅 翀,雷 斌,韓 冰,等.基于切比雪夫多項式的HRWS星載SAR成像算法[J].國外電子測量技術(shù),2015,34(8):40-46.
[5]侯育星,陳士超,唐 禹,等.基于切比雪夫多項式的新形式調(diào)頻變標合成孔徑雷達成像算法[J].電子與信息學(xué)報,2014,36(11):2646-2651.
[6]劉 亮.有限域切比雪夫多項式算法性能測試與分析[J].中國傳媒大學(xué)學(xué)報(自然科學(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é)計算[M].2版.北京:清華大學(xué)出版社,2016:1-5.
[10]劉式適,劉式達.特殊函數(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文獻識別碼:A
1004-4329(2017)04-007-05
10.14096/j.cnki.cn34-1069/n/1004-4329(2017)04-04-007-05
2017-09-12
國家級大學(xué)生創(chuàng)新項目(201610371010);阜陽師范學(xué)院質(zhì)量工程項目(2014JXTD01);阜陽師范學(xué)院橫向課題(XDHX2016021);阜陽師范學(xué)院校級重點科研(2017FSKJ05ZD)資助。
王先傳(1983- ),男,博士,講師,研究方向:數(shù)據(jù)挖掘、自然語言處理。