對龍格函數(shù)作三次樣條插值中n影響:如果固定用三次樣條插值的話,直接影響精確度的就是間距。
成都創(chuàng)新互聯(lián)主營卡若網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,卡若h5重慶小程序開發(fā)搭建,卡若網(wǎng)站營銷推廣歡迎卡若等地區(qū)企業(yè)咨詢
如果表示對函數(shù)f進(jìn)行插值的樣條函數(shù),插值特性,S(xi)=f(xi)樣條相互連接,Si-1(xi)=Si(xi),i=1,n-1兩次連續(xù)可導(dǎo),S'i-1(xi)=S'i(xi)以及S''i-1(xi)=S''i(xi),i=1,n-1。
插值特性只給出了n+1個條件,內(nèi)部數(shù)據(jù)點給出n+12=n1個條件,總計是4n2個條件。我們還需要另外兩個條件,根據(jù)不同的因素我們可以使用不同的條件。
實際計算時
還需要引入邊界條件才能完成計算。邊界通常有自然邊界(邊界點的二階導(dǎo)為0),夾持邊界(邊界點導(dǎo)數(shù)給定),非扭結(jié)邊界(使兩端點的三階導(dǎo)與這兩端點的鄰近點的三階導(dǎo)相等)。一般的計算方法書上都沒有說明非扭結(jié)邊界的定義,但數(shù)值計算軟件如Matlab都把非扭結(jié)邊界條件作為默認(rèn)的邊界條件。
一般來說,節(jié)點個數(shù)越多,插值函數(shù)和被插值函數(shù)就有越多的地方相等。但是隨著插值節(jié)點個數(shù)的增加,兩個插值節(jié)點之間插值函數(shù)并不一定能夠很好地逼近被插值函數(shù)。再次,從舍入誤差看,高次插值由于計算量大,可能會產(chǎn)生更嚴(yán)重的誤差積累,所以,穩(wěn)定性得不到保證。這就是Runge現(xiàn)象。解決Runge現(xiàn)象的方法是采用分段低次多項式插值:有分段線性插值和分段三次Hermite插值。在每個小區(qū)間采用低次插值,則可避免Runge現(xiàn)象。
直接定義a=True/False就行,示例代碼:
#定義布爾值類型參數(shù)a,b,值分別為True,False
a=True
b=False
print a,b
print type(a),type(b)
True False
type 'bool' type 'bool'
Python中的布爾類型:
Python的布爾類型有兩個值:True和False(注意大小寫要區(qū)分)
這個問題,可以參考《用matlab畫出y=1/(1+25x.^2)拉格朗日插值的圖像》。鏈接地址網(wǎng)頁鏈接
好久沒有更新文章了,學(xué)校的教材發(fā)下來了,作業(yè)一下就變多了。
首先,把最終效果放出來:
運用樣條插值,即 B-Spline ,可以使你在圖表中使用曲線連接離散數(shù)據(jù)(在插值法中,這些離散數(shù)據(jù)稱為 節(jié)點 )
正如你在上面所看到的那樣,在Python中插值非常簡單, Scipy 中的 interpolate 為你提供了樣條插值所需要的一系列函數(shù)。
import部分就不多說了,
這里首先定義了一系列節(jié)點,這里數(shù)據(jù)是隨機的,
接下來,首先使用 linspace 為插值提供所需的x值, splrep 根據(jù)節(jié)點計算了樣條曲線的參數(shù),最后將其傳遞給 splev 計算插值后的結(jié)果。
你可能是抱著想要用曲線連接節(jié)點的目的來看這篇文章,但看到這里還沒搞懂插值法是個什么玩意,那么接下來的內(nèi)容就是在講數(shù)學(xué)中的插值法,與Python和Scipy已無關(guān)聯(lián)。
插值法,就是在給定的節(jié)點中作出合適的函數(shù),使得這條曲線 經(jīng)過每一個節(jié)點 ,這也就是為什么在數(shù)據(jù)可視化中使用插值而不是其他方法的原因,因為插值后仍然能夠準(zhǔn)確知道每一節(jié)點所對應(yīng)的值。
那么,是不是節(jié)點越多,插值的準(zhǔn)確性就越高呢?
貌似是這樣,畢竟節(jié)點越多,對曲線的限制條件就越多,那準(zhǔn)確性不久越高了。
但是呢,如果你使用多節(jié)點直接插值(不是在程序中插值,因為程序會使用分段樣條插值),你就會發(fā)現(xiàn),曲線在兩段有明顯的震蕩,并且節(jié)點越多,震蕩越明顯、越大:
這種現(xiàn)象被稱為 Tolmé Runge 現(xiàn)象( 龍格現(xiàn)象 ),描述的就是這一問題。對此的數(shù)學(xué)證明在知乎上有, 傳送門 。
通過龍格現(xiàn)象,我們會發(fā)現(xiàn),當(dāng)節(jié)點數(shù)量趨向于無窮時,插值的誤差會趨向于無窮大:
那么,如何避免這一情況呢,可以把我們原先的等距節(jié)點替換成Chebyshev節(jié)點,但是如果我們的離散數(shù)據(jù)確實等距,這一方法不好用,那么就可以才用分段插值,我們的程序?qū)埜瘳F(xiàn)象也是這樣處理的。
分段插值就是將高次多項式拆分成多個低次多項式,一般都拆分成三次多項式。
由于插值和擬合常常一起出現(xiàn),所以這里也簡單提一下擬合。
擬合是對你給出的離散數(shù)據(jù),作出于數(shù)據(jù) 差距最小 的函數(shù),另外,按照擬合的結(jié)果,擬合也分線性擬合和非線性擬合。
擬合與插值的差別就在于,插值必須過節(jié)點,但是擬合不需要,所以擬合曲線的整體效果會更好,也就是更平滑。
擬合一般都用在數(shù)據(jù)分析里,因為擬合曲線更能夠看出整體的變化趨勢嘛。
這篇文章寫起來難度還是想當(dāng)大,如果我的描述有問題的話,歡迎評論區(qū)留言。
前往我的博客查看本文
用Python的for循環(huán)實現(xiàn)等差序列相加,例如(1+2+3+4+5+...+20)這樣的算法,代碼如下: import mathtemp = 0for x in range(1,20): temp += x break else: print temp #輸入結(jié)果:210
本文題目:龍格函數(shù)插值Python 插值中的龍格現(xiàn)象
文章網(wǎng)址:http://muchs.cn/article36/hjcopg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、建站公司、自適應(yīng)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)