插值與擬合
插值與擬合
引言:我們經(jīng)常會(huì)遇到大量的數(shù)據(jù)需要處理,而處理數(shù)據(jù)的關(guān)鍵就在于這些算法,例如數(shù)據(jù)擬合、參數(shù)估計(jì)、插值等數(shù)據(jù)處理算法。此類問題在MATLAB中有很多現(xiàn)成的函數(shù)可以調(diào)用,熟悉MATLAB,這些方法都能游刃有余的用好。
?
?

插值法
1.?插值的基本原理
在實(shí)際中,常常要處理由實(shí)驗(yàn)或測量所得到的一些離散數(shù)據(jù)。插值與擬合方法就是要通過這些數(shù)據(jù)去確定某一類已知函數(shù)的參數(shù)或?qū)で竽硞€(gè)近似函數(shù),使所得到的近似函數(shù)與已知數(shù)據(jù)有較高的擬合精度。 如果要求這個(gè)近似函數(shù)(曲線或曲面)經(jīng)過所已知的所有數(shù)據(jù)點(diǎn),則稱此類問題為插值問題。 (不需要函數(shù)表達(dá)式)
2.插值方法
選用不同類型的插值函數(shù),逼近的效果就不同,一般有:
(1)分段線性插值(二維插值)
(2)Hermite插值
(3)樣條插值(二維插值)
(4)拉格朗日插值算法(一維插值)
(5)牛頓插值
如果使用拉格朗日插值或者牛頓插值等一段插值算法,使用均勻節(jié)點(diǎn)構(gòu)造高次多項(xiàng)式差值時(shí),在插值區(qū)間的邊緣的誤差可能造成龍格現(xiàn)象。它是由Runge在研究多項(xiàng)式差值的誤差時(shí)發(fā)現(xiàn)的,這一發(fā)現(xiàn)很重要,因?yàn)樗砻?,并不是插值多?xiàng)式的階數(shù)越高,效果就會(huì)越好。
?

(1)分段線性插值
?

方法:分段線性將每兩個(gè)相鄰的節(jié)點(diǎn)用直線連起來,如此形成的一條折線就是分段線性插值函數(shù)。計(jì)算點(diǎn)的插值時(shí),只用到左右的兩個(gè)節(jié)點(diǎn),計(jì)算量與節(jié)點(diǎn)個(gè)數(shù)n無關(guān)。
假設(shè)兩個(gè)節(jié)點(diǎn)為(x1,y1)和(x2,y2),則該區(qū)間上的一次線性方程為:
?

證明過程:
?

?

?
?
知識(shí)點(diǎn):
a.分段線性插值運(yùn)算量較小,插值誤差較小,插值函數(shù)具有連續(xù)性,但是由于在已知點(diǎn)的斜率是不變的,所以導(dǎo)致插值結(jié)果不光滑,存在角點(diǎn)。
b.分段線性插值存在較好的收斂性,n越大,即分段越多,插值的誤差也就越小,函數(shù)收斂越接近原函數(shù)
插值的MATLAB實(shí)現(xiàn)
?

?

圖像結(jié)果如下:
?

?
(2)分段三次Hermite插值
?

?


Hermite 插值就是要求插值函數(shù)不僅經(jīng)過所給節(jié)點(diǎn),而且要保證在該點(diǎn)的導(dǎo)數(shù)也相等。
以3個(gè)點(diǎn)為例,想要使用分段3次Hermite 插值求出這三個(gè)點(diǎn)的插值函數(shù):
分析一下,每一段三次hermite插值多項(xiàng)式
?都有4個(gè)未知系數(shù)需要求解,三個(gè)點(diǎn)就是兩段,那么就有2*4=8個(gè)未知數(shù)。8個(gè)未知數(shù),就需要聯(lián)立8元一次方程組,需要8個(gè)方程:
?一階導(dǎo)數(shù)值相等
上面有5個(gè)方程,還差3個(gè)方程,這三個(gè)方程從定義中可知,需要知道每個(gè)點(diǎn)x 0 、 x 1 、 x 2
即的導(dǎo)數(shù)值必須已知,但是實(shí)際工程中是不太可能知道每個(gè)點(diǎn)的導(dǎo)數(shù)值的。因?yàn)?,你連原函數(shù)都不知道,怎么能知道導(dǎo)數(shù)值呢?
總結(jié)一下:Hermite插值在實(shí)際使用的時(shí)候沒有多大意義,同時(shí)知道點(diǎn)和導(dǎo)數(shù),還假裝不知道原函數(shù)的情況,不多(PS:都知道導(dǎo)數(shù)了有什么計(jì)算的必要?)
插值的MATLAB實(shí)現(xiàn)


分段三次Hermite插值的所有代碼
?
?

?
(2)三次樣條插值
?


?

樣條函數(shù)是一個(gè)重要的逼近工具,在插值、數(shù)值微分、曲線擬合方面有著廣泛的應(yīng)用。
在引出樣條插值的詳細(xì)內(nèi)容之前,我們來看看之前的插值方式的優(yōu)缺點(diǎn)。
插值方式優(yōu)點(diǎn)缺點(diǎn)多項(xiàng)式Lagrange插值整體性強(qiáng),光滑性好不一定收斂分段多項(xiàng)式Lagrange插值局部性好,收斂性保證光滑性差(相鄰區(qū)間點(diǎn)處不可導(dǎo),尖點(diǎn))分段多項(xiàng)式Hermite插值局部性好,滿足一定光滑性,收斂性得到保證需要倒數(shù)信息
為了集合上述方法的優(yōu)點(diǎn)避免缺點(diǎn),我們就提出了樣條插值法。樣條插值是一個(gè)收斂性好,光滑性好,不需要過多導(dǎo)數(shù)信息,只要函數(shù)值信息的插值方法。
用一句話來講:
三次樣條插值就是將原始長序列分割成若干段構(gòu)造多個(gè)三次函數(shù)(每段一個(gè)),使得分段的銜接處具有二階導(dǎo)數(shù)連續(xù)的性質(zhì)(也就是光滑銜接)。
插值的MATLAB實(shí)現(xiàn)
?



各個(gè)插值優(yōu)缺點(diǎn):

1.2. 擬合的基本原理
如果不要求近似函數(shù)通過所有數(shù)據(jù)點(diǎn),而是要求它能較好地反映數(shù)據(jù)變化規(guī)律的近似函數(shù)的方法稱為數(shù)據(jù)擬合。(必須有函數(shù)表達(dá)式) 近似函數(shù)不一定(曲線或曲面)通過所有的數(shù)據(jù)點(diǎn)。
?

?
?
?

?


擬合的MATLAB實(shí)現(xiàn)
?
?

?

?


?
擬合評(píng)價(jià)操作方法:
1.?公式計(jì)算
2.?cftool
3.?圖像->基本擬合
3.1、聯(lián)系
都是根據(jù)實(shí)際中一組已知數(shù)據(jù)來構(gòu)造一個(gè)能夠反映數(shù)據(jù)變化規(guī)律的近似函數(shù)的方法。
3.2、區(qū)別
插值問題不一定得到近似函數(shù)的表達(dá)形式,僅通過插值方法找到未知點(diǎn)對(duì)應(yīng)的值。數(shù)據(jù)擬合要求得到一個(gè)具體的近似函數(shù)的表達(dá)式。
?
3.3、選擇
當(dāng)數(shù)據(jù)量不夠,數(shù)據(jù)量<30,需要補(bǔ)充,且認(rèn)定已有數(shù)據(jù)可信時(shí),通常利用函數(shù)插值方法。
實(shí)際問題當(dāng)中碰到的函數(shù) f (x) 是各種各樣的,有的表達(dá)式很復(fù)雜,有的甚至給不出數(shù)學(xué)的式子,只提供了一些離散數(shù)據(jù),警如,某些點(diǎn)上的函數(shù)值和導(dǎo)數(shù)值。
?
?參考視頻來源于bilibli:https://www.bilibili.com/video/BV13T4y1r7R1/?spm_id_from=333.337.search-card.all.click
借鑒文章鏈接來源于csdn:https://blog.csdn.net/u011754972/article/details/123550131