數(shù)值分析:多項(xiàng)式插值

前言

插值不僅僅用在數(shù)值積分,更是有限元和譜元法的基礎(chǔ)睡腿!在多種多樣的插值方法中康谆,首先推薦的是分段線性(拉格朗日)插值,在后文我們就會(huì)看到它的通用性和近似的精確性嫉到。在開始之間,要首先明確"插值與擬合"的區(qū)別:

  • 插值:尋找一個(gè)能反映函數(shù)f(x)特性月洛,且形式簡單何恶、性質(zhì)良好的函數(shù)\varphi(x) 來"近似"!必須滿足的條件:必過一系列插值點(diǎn)嚼黔。
  • 擬合:同樣是為了"近似"原函數(shù)f(x)细层,并反映其總體趨勢惜辑。但是擬合沒有強(qiáng)制必須過哪些點(diǎn)。

多項(xiàng)式插值原理

一句話總結(jié):拉格朗日插值疫赎,就是用"一系列多項(xiàng)式相加"來近似原函數(shù)盛撑。即:

f(x) ≈ P_n(x) = a_0 + a_1x + a_2x^2 + \cdots + a_nx^n

上式中的P_n(x)就叫做"原函數(shù)的插值多項(xiàng)式",對應(yīng)的方法就是"多項(xiàng)式插值法"捧搞!已經(jīng)證明:插值多項(xiàng)式具有"存在性"和"唯一性"抵卫,因此可以放心使用。各種不同的插值方法胎撇,只是實(shí)現(xiàn)的方式不同介粘,但是原理都是求解那唯一的插值多項(xiàng)式。

拉格朗日插值

一階拉格朗日插值:共2個(gè)插值節(jié)點(diǎn)晚树,這2點(diǎn)間(都經(jīng)過)用直線段代替姻采;
二階拉格朗日插值:共3個(gè)插值節(jié)點(diǎn),這2點(diǎn)間(都經(jīng)過)用二次函數(shù)代替爵憎;
n階拉格朗日插值:共n+1個(gè)插值節(jié)點(diǎn)慨亲,這n+1點(diǎn)間(都經(jīng)過)用n次函數(shù)代替刑棵。

規(guī)律:拉格朗日插值階數(shù) = 基函數(shù)個(gè)數(shù) = 區(qū)間分段總數(shù) = 總插值節(jié)點(diǎn)數(shù) - 1

下面先給出一階和二階的公式:

拉格朗日插值 2點(diǎn)一階(一次多項(xiàng)式) 3點(diǎn)二階(二次多項(xiàng)式)
插值節(jié)點(diǎn) (x_0,y_0)铐望、(x_1,y_1) (x_0,y_0)正蛙、(x_1,y_1)乒验、(x_2,y_2)
基函數(shù) l_0(x)=\frac{x-x_1}{x_0-x_1} \quad l_1(x)=\frac{x-x_0}{x_1-x_0} l_0(x)=\frac{(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)}
l_1(x)=\frac{(x-x_0)(x-x_2)}{(x_1-x_0)(x_1-x_2)} \quad l_2(x)=\frac{(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)}
插值函數(shù) L_1(x) = y_0l_0(x) + y_1l_1(x) L_2(x) = y_0l_0(x) + y_1l_1(x) + y_2l_2(x)
說明 每2點(diǎn)間有2個(gè)基函數(shù) 每3點(diǎn)間有3個(gè)基函數(shù)

下面給出n階的插值基函數(shù)公式:

l_0(x) = \frac{(x-x_1)(x-x_2)\cdots (x-x_n)}{(x_1-x_0)(x_1-x_2)\cdots (x_0-x_n)}
l_i(x) = \frac{(x-x_0)(x-x_1)\cdots (x-x_{i-1})(x-x_{i+1})\cdots (x-x_n)} {(x_i-x_0)(x_i-x_1)\cdots (x_i-x_{i-1})(x_i-x_{i+1})\cdots (x_i-x_n)} \quad (i=1,2,\cdots ,n-1)
l_0(x) = \frac{(x-x_1)(x-x_2)\cdots (x-x_{n-1})}{(x_n-x_0)(x_n-x_2)\cdots (x_n-x_{n-1})}
L_n(x) = \sum_{i=0}^{n}y_il_i(x)

但是录煤,以上的這3種方法都不能用!一階和二階精度太低了嚎,n階("滿配"——有幾個(gè)插值點(diǎn)就用幾階多項(xiàng)式去近似)會(huì)出現(xiàn)"過度擬合"歪泳,也就是Runge現(xiàn)象(稍微復(fù)雜一點(diǎn)呐伞、有一些彎曲變換的函數(shù)在高階近似都會(huì)出現(xiàn)):

圖1:10階拉格朗日插值普遍出現(xiàn)龍格現(xiàn)象

注意一點(diǎn):龍格現(xiàn)象都大的誤差/影響趟径,在函數(shù)的兩端鞍历!即圖中函數(shù)兩端的藍(lán)圈劣砍。

拉格朗日插值節(jié)點(diǎn)的選取

一般情況下,插值節(jié)點(diǎn)都是區(qū)間的等分點(diǎn)香嗓;但事實(shí)上靠娱,插值節(jié)點(diǎn)的選取完全可以任意像云!可以不遵循任何分布的規(guī)律蚂夕!一般情況下對區(qū)間的等分或等比劃分婿牍,只是為了編程方便而已等脂!本文采取的就是均分的情況。但是在有限元和譜元法中搏屑,一定不會(huì)再用均分了2桥铩R值场底靠!

在強(qiáng)調(diào)一遍:拉格朗日的插值節(jié)點(diǎn)是可以任意分布的暑中!

分段線性拉格朗日插值

當(dāng)插值點(diǎn)很多的時(shí)候鲫剿,上面的方法都不能用灵莲!此時(shí)我們最好的工具就是"分段線性拉格朗日插值"政冻!即:即使插值節(jié)點(diǎn)再多,每2個(gè)相鄰插值點(diǎn)間用一階拉格朗日插值汽摹,然后每一段加起來(分段函數(shù)表示也行)即可逼泣。這才是實(shí)際中會(huì)用到的筒溃。

下面給出分段線性插值的基函數(shù)公式:

l_0(x)=\begin{cases} \frac{x-x_1}{x_0-x_1} & x_0≤x≤x_1 \\ 0 & 其他 \end{cases}

l_i(x)=\begin{cases} \frac{x-x_{i-1}}{x_i - x_{i-1}} & x_{i-1}≤x≤x_{i} \\ \frac{x-x_{i+1}}{x_i - x_{i+1}} & x_{i}≤x≤x_{i+1} \quad\quad (i=1,2,\cdots, n-1)\\ 0 & 其他 \end{cases}

l_0(x)=\begin{cases} \frac{x-x_{n-1}}{x_n-x_{n-1}} & x_{n-1}≤x≤x_{n} \\ 0 & 其他 \end{cases}

L(x) = y_0l_0(x) + y_1l_1(x) + y_2l_2(x) + y_3l_3(x) + \cdots + y_nl_n(x)

基函數(shù)的圖像為

圖2:各個(gè)基函數(shù)圖像(畫到一起了)

我們發(fā)現(xiàn):各個(gè)基函數(shù)(一階/直線),它們的值域都是[0,1](這是一定的),并且斜率一樣(這不一定莺治,這里因?yàn)閰^(qū)間是等分的谣旁,所以各基函數(shù)的分母都是一樣的)。這一堆看似平凡砌们,并且值域和原函數(shù)的值域相差甚遠(yuǎn)的一群線性基函數(shù)浪感,怎么會(huì)拼湊在一起就能近似原函數(shù)呢?
因?yàn)椋好恳粋€(gè)基函數(shù)前面都會(huì)乘以一個(gè)y_i揭斧,這個(gè)必過的插值點(diǎn)的y值與對應(yīng)的基函數(shù)合作峻堰,就可以把基函數(shù)的值給拉起來捐名!拉到和原函數(shù)一樣的高度镶蹋。

注意:l_i(x)中比如l_2(x),同樣的標(biāo)志l_2(x)是有2個(gè)不同的表達(dá)式的U纭G砬弧踱葛!即:
l_2(x) = \frac{x-x_1}{x_2 - x_1} \quad\quad x_1≤x≤x_2

l_2(x) = \frac{x-x_3}{x_2 - x_3} \quad\quad x_2≤x≤x_3

根據(jù)公式可能不太好理解尸诽,只需記住其內(nèi)涵——每2個(gè)相鄰插值點(diǎn)間用一階拉格朗日插值即可性含。
實(shí)際操作,我們一般用分段函數(shù)表示叠萍。

下面給出matlab實(shí)現(xiàn)分段線性拉格朗日插值:

clear; clc;

xnum = [1 2 2.3 5.1 6.2 6.8 8 8.4 9.1];  
ynum = sqrt(xnum);  % 針對的sqrt(x)的函數(shù),其他函數(shù)都同理

n = length(xnum);
syms x L;
L_tmp = sym(zeros(1,n-1));

% 每一段(兩個(gè)相鄰點(diǎn))拉格朗日插值直線:
for m = 1:n-1
    l0 = (x-xnum(m+1))/(xnum(m)-xnum(m+1));
    l1 = (x-xnum(m))/(xnum(m+1)-xnum(m));
    L_tmp(m) = ynum(m)*l0 + ynum(m+1)*l1;
end

% 分段函數(shù)做圖沒有問題:就是一段一段畫而已
figure(1);
for m = 1:n-1
    x = [xnum(m),xnum(m+1)];
    y = double(subs(L_tmp(m)));
    plot(x,y);
    hold on;
end
grid on;

% 原始函數(shù)圖像(畫到一起)
x1 = xnum(1):0.1:xnum(n);
y1 = sqrt(x1);
plot(x1,y1,'--k');
title('分段線性近似y=sqrt(x)函數(shù)');
xlabel('x');  ylabel('y');

效果如下:

圖3:分段線性拉格朗日插值近似效果圖

其他插值方法

牛頓插值苛谷、埃爾米特插值(需要求一階導(dǎo)數(shù))格郁、三次樣條插值等独悴。我們最常用的刻炒,以及后面數(shù)值積分的各種方法落蝙,都是基于分段線性拉格朗日插值的!

所有插值方法的核心思路:用一個(gè)簡單的多項(xiàng)式去替代原函數(shù)移迫!要想提高插值函數(shù)近似的精度,只要增加插值節(jié)點(diǎn)邪媳。

所有插值方法的重要細(xì)節(jié):插值點(diǎn)完全可以是隨意分布的雨效!從未要求一定是區(qū)間的等分或等比點(diǎn)废赞。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末据悔,一起剝皮案震驚了整個(gè)濱河市耘沼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌群嗤,老刑警劉巖狂秘,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赃绊,死亡現(xiàn)場離奇詭異碧查,居然都是意外死亡校仑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來羊瘩,“玉大人盼砍,你說我怎么就攤上這事〔谴罚” “怎么了擒贸?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵介劫,是天一觀的道長座韵。 經(jīng)常有香客問我回右,道長翔烁,這世上最難降的妖魔是什么旨涝? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任慨默,我火速辦了婚禮,結(jié)果婚禮上厦取,老公的妹妹穿的比我還像新娘虾攻。我一直安慰自己,他們只是感情好霎箍,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布漂坏。 她就那樣靜靜地躺著顶别,像睡著了一般驯绎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天,我揣著相機(jī)與錄音指蚜,去河邊找鬼绽媒。 笑死免猾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的获三。 我是一名探鬼主播疙教,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼葵诈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起耐亏,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤沪斟,失蹤者是張志新(化名)和其女友劉穎广辰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體主之,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡择吊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了槽奕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片几睛。...
    茶點(diǎn)故事閱讀 40,926評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖粤攒,靈堂內(nèi)的尸體忽然破棺而出所森,到底是詐尸還是另有隱情,我是刑警寧澤夯接,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響上鞠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辨赐,春花似錦、人聲如沸不恭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锅论,已是汗流浹背藻懒。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工酷含, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舱污,地道東北人扩灯。 一個(gè)月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像布讹,于是被迫代替她去往敵國和親坑鱼。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 何謂數(shù)值分析缠局? 眾所周知現(xiàn)實(shí)生活中科學(xué)技術(shù)上面的問題大多數(shù)都能夠通過建立對應(yīng)的數(shù)學(xué)模型把實(shí)際問題轉(zhuǎn)化成一個(gè)數(shù)學(xué)問題...
    羅澤坤閱讀 8,864評論 0 14
  • 1. 拉格朗日多項(xiàng)式插值 了解概念 插值多項(xiàng)式插值節(jié)點(diǎn)范德蒙特(Vandermonde)行列式截?cái)嗾`差、插值余項(xiàng)...
    野狗子嗷嗷嗷閱讀 2,556評論 0 3
  • 最近一段時(shí)間在復(fù)習(xí)數(shù)值計(jì)算相關(guān)內(nèi)容渐北,也恰逢簡書斷更了,不用每天督促著自己非要更出點(diǎn)什么東西才好呕臂,有更多的空間來打磨...
    抄書俠閱讀 1,259評論 0 6
  • 1. 拉格朗日多項(xiàng)式插值 了解概念 插值多項(xiàng)式插值節(jié)點(diǎn)范德蒙特(Vandermonde)行列式截?cái)嗾`差吴叶、插值余項(xiàng)...
    野狗子嗷嗷嗷閱讀 2,725評論 0 9
  • 最近和同學(xué)分尸,朋友聚餐,聚會(huì)或者出去游玩的時(shí)候,總是會(huì)有某個(gè)同學(xué)或者朋友拿出手機(jī)翻看朋友圈時(shí)挣菲,指著其中一條消息或杠,無比...
    望山云霧閱讀 1,666評論 1 3