【数学与算法】【分段三次Hermite插值】和【分段三次样条插值】
光滑曲線在數(shù)學(xué)上的定義是什么??
原文鏈接:光滑曲線在數(shù)學(xué)上的定義是什么?
回答1:
定義:切線隨切點(diǎn)的移動(dòng)而連續(xù)轉(zhuǎn)動(dòng)。
若函數(shù)f(x)f(x)f(x)在區(qū)間(a,b)(a,b)(a,b)內(nèi)具有一階連續(xù)導(dǎo)數(shù),則其圖形為一條處處有切線的曲線。則為光滑曲線。簡言之,若f′(x)f'(x)f′(x)連續(xù),則曲線光滑。
但反之,不成立。比如圓,圓在直角坐標(biāo)系下,有兩條豎直的切線,導(dǎo)數(shù)不存在(為∞大)。
回答2:
不敢保證對(duì)。但同糾結(jié)這個(gè)問題,想了許久,有點(diǎn)心得,拿來探討。希望有緣破解心中迷霧:
- 1.光滑,從直觀上是不突兀,流線的。臺(tái)階本質(zhì)上是折線,因此在轉(zhuǎn)折處感覺尖銳,突兀,是為不光滑。例如y=丨x丨y=丨x丨y=丨x丨在x=0x=0x=0處就很尖銳。y=x2y=x^2y=x2在 x=0x=0x=0處是一段曲線,看上去用手摸了不會(huì)扎手。
- 2.存在切線,就是在一點(diǎn)附近,曲線無限接近于一條直線。曲線被磨平了,只有這樣,才不扎手。要求切線隨著點(diǎn)連續(xù)轉(zhuǎn)動(dòng),就是表達(dá)曲線不會(huì)一下子過度太快,無限接近的兩點(diǎn)形狀無限接近。
至于判斷,先直觀想象圖像,再證明。
求一次導(dǎo),相當(dāng)于把函數(shù)的變化過程放大一次。因此嚴(yán)格的光滑定義要求無限階可導(dǎo),也就是不管怎么拉大拉平,都是不扎手。
分段差值:
分段插值: 通常可能指的是直接分段低次線插, 通俗來說 這樣出來的線條不是很平滑. 因?yàn)樵诠?jié)點(diǎn)上不一定可導(dǎo).
直接hermite插值就和一樓說的差不多三次樣條與分段 Hermite 插值的根本區(qū)別在于S(x)自身光滑(考慮了二階倒數(shù)),不需要知道 f 的導(dǎo)數(shù)值(除了在2個(gè)端點(diǎn)可能需要);
而Hermite插值依賴于f 在所有插值點(diǎn)的導(dǎo)數(shù)值。(S(x)為插值基函數(shù),f為你要插值的函數(shù))
分段三次埃爾米特插值:
可以參考:數(shù)值分析(4)-多項(xiàng)式插值: 埃爾米塔插值法
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)式 f(x)=a+b?x+c?x2+d?x3\color{blue}f(x)=a+b*x+c*x^2+d*x^3f(x)=a+b?x+c?x2+d?x3都有4個(gè)未知系數(shù)需要求解,三個(gè)點(diǎn)就是兩段,那么就有2*4=8個(gè)未知數(shù)。8個(gè)未知數(shù),就需要聯(lián)立8元一次方程組,需要8個(gè)方程:
S0(x0)=y0S0(x1)=y1S1(x1)=y1S1(x2)=y2S0′(x1)=S1′(x1):一階導(dǎo)數(shù)值相等\color{blue} S_0(x_0)=y_0 \\ S_0(x_1)=y_1 \\ S_1(x_1)=y_1 \\ S_1(x_2)=y_2\\ S_0'(x_1)=S_1'(x_1) :一階導(dǎo)數(shù)值相等 S0?(x0?)=y0?S0?(x1?)=y1?S1?(x1?)=y1?S1?(x2?)=y2?S0′?(x1?)=S1′?(x1?):一階導(dǎo)數(shù)值相等
上面有5個(gè)方程,還差3個(gè)方程,這三個(gè)方程從定義中可知,需要知道每個(gè)點(diǎn)x0、x1、x2\color{blue}x_0、x_1、x_2x0?、x1?、x2?處的導(dǎo)數(shù)。即S0′(x0)、S1′(x1)、S1′(x2)\color{blue}S_0'(x_0)、S_1'(x_1)、S_1'(x_2)S0′?(x0?)、S1′?(x1?)、S1′?(x2?)的導(dǎo)數(shù)值必須已知,但是實(shí)際工程中是不太可能知道每個(gè)點(diǎn)的導(dǎo)數(shù)值的。因?yàn)?#xff0c;你連原函數(shù)都不知道,怎么能知道導(dǎo)數(shù)值呢?
總結(jié)一下:Hermite插值在實(shí)際使用的時(shí)候沒有多大意義,同時(shí)知道點(diǎn)和導(dǎo)數(shù),還假裝不知道原函數(shù)的情況,不多(PS:都知道導(dǎo)數(shù)了有什么計(jì)算的必要?)
所以,一般用牛頓,牛頓大法好!
分段三次樣條插值:
推薦參考【三次樣條(cubic spline)插值】
可以參考【數(shù)值分析(5)-分段低次插值和樣條插值】
三次多項(xiàng)式有兩種形式,很自然的,我們會(huì)想到第一種,如下:
y=ai+bix+cix2+dix3(1)y=a_i+b_ix+c_ix^2+d_ix^3 \tag{1} y=ai?+bi?x+ci?x2+di?x3(1)
我們還有第二種寫法,下面的曲線表達(dá)式經(jīng)過(xi,yi)(x_i,y_i)(xi?,yi?):
y=ai+bi(x?xi)+ci(x?xi)2+di(x?xi)3(2)y=a_i+b_i(x-x_i)+c_i(x-x_i)^2+d_i(x-x_i)^3 \tag{2} y=ai?+bi?(x?xi?)+ci?(x?xi?)2+di?(x?xi?)3(2)
把上面(2)這個(gè)展開后,變成了:
y=(ai?bixi+cixi2?dixi3)+(bi?2cixi+3dixi2)x+(ci?3dixi)x2+dix3y=\color{blue}(a_i-b_ix_i+c_ix_i^2-d_ix_i^3)+\color{red}(b_i-2c_ix_i+3d_ix_i^2)x+\color{green}(c_i-3d_ix_i)x^2+\color{brown}d_ix^3 y=(ai??bi?xi?+ci?xi2??di?xi3?)+(bi??2ci?xi?+3di?xi2?)x+(ci??3di?xi?)x2+di?x3
所以兩種形式的寫法都對(duì),最終求出來的ai、bi、ci、dia_i、b_i、c_i、d_iai?、bi?、ci?、di?雖然是不同的值,但是最終的表達(dá)式肯定是一樣的。因?yàn)榈诙N寫法的ai、bi、ci、dia_i、b_i、c_i、d_iai?、bi?、ci?、di?并不是真正的系數(shù),不過第二種寫法在推導(dǎo)數(shù)學(xué)公式時(shí)很方便。
有點(diǎn)類似于我們小學(xué)時(shí)候?qū)W的y=kx+by=kx+by=kx+b和y?yi=k(x?xi)y-y_i=k(x-x_i)y?yi?=k(x?xi?)的樣子,都是兩種表示方法。
對(duì)于分段三次樣條插值,就比分段三次hermite多項(xiàng)式插值多了一個(gè)條件,即各點(diǎn)的二階導(dǎo)數(shù)相等。還是以三個(gè)點(diǎn)為例:
S0(x0)=y0S0(x1)=y1S1(x1)=y1S1(x2)=y2S0′(x1)=S1′(x1):x1處一階導(dǎo)數(shù)值相等S0′′(x1)=S1′′(x1):x1處二階導(dǎo)數(shù)相等\color{blue} S_0(x_0)=y_0\\ S_0(x_1)=y_1\\ S_1(x_1)=y_1\\ S_1(x_2)=y_2\\ S_0'(x_1)=S_1'(x_1) :x_1處一階導(dǎo)數(shù)值相等\\ S_0''(x_1)=S_1''(x_1):x_1處二階導(dǎo)數(shù)相等 S0?(x0?)=y0?S0?(x1?)=y1?S1?(x1?)=y1?S1?(x2?)=y2?S0′?(x1?)=S1′?(x1?):x1?處一階導(dǎo)數(shù)值相等S0′′?(x1?)=S1′′?(x1?):x1?處二階導(dǎo)數(shù)相等
然后再利用三類邊界條件中的其中一種邊界條件,即可以從兩個(gè)端點(diǎn)x0、x2\color{blue}x_0、x_2x0?、x2?處再得到兩個(gè)方程。
三類邊界條件:
用下面的解釋更容易明白:
例如一系列節(jié)點(diǎn) x0、x1、......、xn?1、xn\color{blue}x_0、x_1、......、x_{n-1}、x_nx0?、x1?、......、xn?1?、xn?,其中x0、xn\color{blue}x_0、x_nx0?、xn?是兩個(gè)端點(diǎn)(也叫邊界點(diǎn)),三類邊界條件如下:
- 自然邊界:
兩個(gè)端點(diǎn)即邊界點(diǎn)的二階導(dǎo)都為0;
S0′′(x0)=0\color{blue}S_0''(x_0)=0S0′′?(x0?)=0
Sn′′(xn?1)=0\color{blue}S_n''(x_{n-1})=0Sn′′?(xn?1?)=0。 - 夾持邊界:
由邊界點(diǎn)一階導(dǎo)數(shù)給定,例如分別給兩個(gè)邊界點(diǎn)的一階導(dǎo)數(shù)設(shè)定為A\color{blue}AA和B\color{blue}BB;
S0′(x0)=A\color{blue}S_0'(x_0)=AS0′?(x0?)=A
Sn′(xn?1)=B\color{blue}S_n'(x_{n-1})=BSn′?(xn?1?)=B。 - 非扭結(jié)邊界:
使兩個(gè)邊界端點(diǎn)的三階導(dǎo)與這兩端點(diǎn)的鄰近點(diǎn)的三階導(dǎo)相等。那么令
S0′′′(x0)=S0′′′(x1)\color{blue}S_0'''(x_0)=S_0'''(x_1)S0′′′?(x0?)=S0′′′?(x1?)
Sn′′′(xn?1)=Sn′′′(xn)\color{blue}S_n'''(x_{n-1})=S_n'''(x_n)Sn′′′?(xn?1?)=Sn′′′?(xn?)。
總結(jié)
以上是生活随笔為你收集整理的【数学与算法】【分段三次Hermite插值】和【分段三次样条插值】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数学与算法】贝塞尔曲线
- 下一篇: 【数学与算法】二部图、匈牙利匹配、稳定婚