1 三次スプライン
定義 1.1.N∈N≥1とし、実数a=x0<x1<⋯<xN=bをとる。
- 関数s:[a,b]→RがC2級であり、各1≤i≤Nに対して、次数3以下の実係数多項式piが存在して[xi−1,xi]上でs=piを満たすとき、sを節点x0,…,xN上の 三次スプライン (cubic spline) という。
- 実数y0,…,yNに対して、三次スプラインsがs(xi)=yi(0≤i≤N)を満たすとき、sはデータ(xi,yi)を補間するという。関数f:[a,b]→Rに対してyi=f(xi)であるとき、sはfを補間するという。
- データ(xi,yi)を補間する三次スプラインsがs′′(a)=s′′(b)=0を満たすとき、sをデータ(xi,yi)の 自然スプライン (natural spline) といい、条件s′′(a)=s′′(b)=0を 自然条件 (natural end condition) という。
- 実数da,dbに対して、データ(xi,yi)を補間する三次スプラインsがs′(a)=da、s′(b)=dbを満たすとき、sを端点の傾きda,dbをもつデータ(xi,yi)の 端点微分指定スプライン (clamped spline) という。
2 節点の二階微分による構成
補題 2.1.c∈R、h>0とし、x∈Rに対してt:=(x−c)/hと置く。実数y0,y1,M0,M1に対して
p(x):=(1−t)y0+ty1+6h2(M0((1−t)3−(1−t))+M1(t3−t))と置く。
- pは次数3以下の実係数多項式であり、p(c)=y0、p(c+h)=y1、p′′(x)=(1−t)M0+tM1を満たす。特にp′′(c)=M0、p′′(c+h)=M1である。これら四つの値p(c)、p(c+h)、p′′(c)、p′′(c+h)をもつ次数3以下の実係数多項式はpだけである。
- p′(c)=(y1−y0)/h−h(2M0+M1)/6、p′(c+h)=(y1−y0)/h+h(M0+2M1)/6である。
- 任意のx∈[c,c+h]に対して∣p(x)∣≤max{∣y0∣,∣y1∣}+h2max{∣M0∣,∣M1∣}/8である。
定理 2.2.N∈N≥1とし、実数a=x0<⋯<xN=bと実数y0,…,yN、da,dbをとる。1≤i≤Nに対してhi:=xi−xi−1、Δi:=(yi−yi−1)/hiと置く。m=(m0,…,mN)∈RN+1と1≤i≤Nに対して、c=xi−1、h=hi、(y0,y1,M0,M1)=(yi−1,yi,mi−1,mi)として補題 2.1の多項式pをpm,iと書き、x∈[xi−1,xi]に対してsm(x):=pm,i(x)と置く。1≤i≤N−1に対してμi:=hi/(hi+hi+1)、λi:=hi+1/(hi+hi+1)とし、
ρi(m):=μimi−1+2mi+λimi+1−hi+hi+16(Δi+1−Δi)と置く。さらに
ρ0c(m):=2m0+m1−h16(Δ1−da),ρNc(m):=mN−1+2mN−hN6(db−ΔN)と置く。MN+1(R)の行列Ac、Anとrc,rn∈RN+1を、任意のm∈RN+1について
Acm−rc=(ρ0c(m),ρ1(m),…,ρN−1(m),ρNc(m)),Anm−rn=(m0,ρ1(m),…,ρN−1(m),mN)が成り立つものとして定める。
- 任意のm∈RN+1に対してsmは[a,b]上の関数として定まり、sm(xi)=yi(0≤i≤N)である。smが節点x0,…,xN上の三次スプラインであることと、ρi(m)=0(1≤i≤N−1)であることは同値であり、このときsm′′(xi)=mi(0≤i≤N)である。データ(xi,yi)を補間する任意の三次スプラインsは、mi:=s′′(xi)と置いたmについてs=smを満たす。
- Acは、各行iで対角成分の絶対値が同じ行の非対角成分の絶対値の和より大きい三重対角行列である。端点の傾きda,dbをもつデータ(xi,yi)の端点微分指定スプラインはただ一つ存在し、それはAcm=rcのただ一つの解mに対するsmである。§E20.5 定理 6.1 (1)の計算は、Acm=rcの解を8N+1回の四則演算で与える。
- データ(xi,yi)の自然スプラインはただ一つ存在し、それはAnm=rnのただ一つの解mに対するsmである。このmはm0=mN=0を満たす。N=1ならば、自然スプラインはs(x)=y0+Δ1(x−a)である。N≥2ならば、(m1,…,mN−1)は、ρi(m)=0(1≤i≤N−1)にm0=mN=0を代入したN−1元の連立一次方程式のただ一つの解であり、その係数行列は、各行で対角成分の絶対値が同じ行の非対角成分の絶対値の和より大きい三重対角行列である。§E20.5 定理 6.1 (1)の計算は、この解を8N−15回の四則演算で与える。
- A∈{Ac,An}は正則であり、任意のv∈RN+1に対して∥v∥∞≤∥Av∥∞が成り立つ。
証明.(1)を示す。1≤i≤N−1について、補題 2.1 (1)によりpm,i(xi)=yi=pm,i+1(xi)であるから、smは定まり、sm(xi)=yiである。smのxiにおける左側と右側のk階微分係数はpm,i(k)(xi)とpm,i+1(k)(xi)である。補題 2.1 (1)によりpm,i′′(xi)=mi=pm,i+1′′(xi)であり、補題 2.1 (2)により
pm,i+1′(xi)−pm,i′(xi)=Δi+1−6hi+1(2mi+mi+1)−Δi−6hi(mi−1+2mi)=−6hi+hi+1ρi(m)である。ρi(m)=0(1≤i≤N−1)ならば、各xiでsmの左右の微分係数が一致するのでsmは[a,b]で微分可能であり、sm′は各[xi−1,xi]上でpm,i′に一致するので連続である。sm′のxiにおける左右の微分係数はpm,i′′(xi)=miとpm,i+1′′(xi)=miであり一致するので、sm′は[a,b]で微分可能であり、sm′′は各[xi−1,xi]上でpm,i′′に一致するので連続であって、sm′′(xi)=miである。逆にsmがC2級ならば、xiでの左右の微分係数が一致するのでρi(m)=0である。smは各[xi−1,xi]で次数3以下の多項式pm,iに一致するので、C2級であることは三次スプラインであることと同値である。sm′′(a)=pm,1′′(x0)=m0、sm′′(b)=pm,N′′(xN)=mNである。sをデータ(xi,yi)を補間する三次スプラインとし、[xi−1,xi]上でs=piを満たす次数3以下の多項式piをとる。sはC2級であるからpi′′(xi−1)=s′′(xi−1)=mi−1、pi′′(xi)=s′′(xi)=miであり、pi(xi−1)=yi−1、pi(xi)=yiである。補題 2.1 (1)の一意性によりpi=pm,iであり、s=smである。
(2)を示す。Acの第0行の0でない成分は対角成分2と(0,1)成分1、第N行の0でない成分は(N,N−1)成分1と対角成分2、第i行(1≤i≤N−1)の0でない成分はμi、2、λiであり、μi+λi=1である。したがってAcは三重対角であり、各行で2>1である。補題 2.1 (2)により
sm′(a)=pm,1′(x0)=Δ1−6h1(2m0+m1)=da−6h1ρ0c(m),sm′(b)=pm,N′(xN)=ΔN+6hN(mN−1+2mN)=db+6hNρNc(m)である。(1)と合わせて、smが端点の傾きda,dbをもつ端点微分指定スプラインであることはAcm=rcと同値である。§E20.5 定理 6.1 (2)によりAcm=rcはただ一つの解mをもち、§E20.5 定理 6.1 (1)の計算はN+1次の系を8(N+1)−7=8N+1回の四則演算で解く。smは求める端点微分指定スプラインである。sが端点微分指定スプラインならば、(1)によりmi′:=s′′(xi)についてs=sm′であり、Acm′=rcであるからm′=m、s=smである。
(3)を示す。(1)により、smが自然スプラインであることはm0=mN=0かつρi(m)=0(1≤i≤N−1)であること、すなわちAnm=rnと同値であり、データ(xi,yi)の任意の自然スプラインsはmi′:=s′′(xi)と置いたm′についてs=sm′、Anm′=rnを満たす。したがって、Anm=rnがただ一つの解mをもつことを示せば、自然スプラインはただ一つ存在してsmに等しい。N=1ならば条件はm=0であり、s0(x)=(1−t)y0+ty1=y0+Δ1(x−a)(t=(x−a)/h1)である。N≥2ならば、m0=mN=0を代入したN−1元の系の第i行の0でない成分は、対角成分2と、μi(i≥2のとき)、λi(i≤N−2のとき)であり、非対角成分の絶対値の和はμi+λi=1以下である。§E20.5 定理 6.1 (2)によりこの系はただ一つの解をもち、§E20.5 定理 6.1 (1)の計算は8(N−1)−7=8N−15回の四則演算でそれを与える。m0=mN=0と合わせて、Anm=rnの解はただ一つである。
(4)を示す。Anの第0行と第N行は、対角成分が1でその他が0である。(2)の証明で求めたAcの成分と合わせて、A∈{Ac,An}の各行iで∣aii∣−∑j=i∣aij∣=1である。§E20.5 命題 6.2をδ=1として適用して、Aは正則であり∥A−1∥∞≤1である。v=A−1(Av)から∥v∥∞≤∥Av∥∞を得る。▨
系 2.3.定理 2.2の記号で、hmax:=max1≤i≤Nhiと置く。
- 任意のm,m^∈RN+1に対してsupx∈[a,b]∣sm(x)−sm^(x)∣≤hmax2∥m−m^∥∞/8である。
- (A,r)∈{(Ac,rc),(An,rn)}とし、mをAm=rの解とする。任意のm^∈RN+1に対してsupx∈[a,b]∣sm(x)−sm^(x)∣≤hmax2∥Am^−r∥∞/8である。
証明.(1)を示す。1≤i≤Nとする。補題 2.1のpは(y0,y1,M0,M1)について線形であるから、[xi−1,xi]上のsm−sm^=pm,i−pm^,iは、c=xi−1、h=hi、(y0,y1,M0,M1)=(0,0,mi−1−m^i−1,mi−m^i)に対するpである。補題 2.1 (3)により、[xi−1,xi]上で∣sm−sm^∣≤hi2∥m−m^∥∞/8である。
(2)を示す。定理 2.2 (4)により∥m−m^∥∞≤∥A(m−m^)∥∞=∥r−Am^∥∞であり、(1)から評価を得る。▨
例 2.4.定理 2.2の記号でm=0とすると、各[xi−1,xi]上でs0(x)=yi−1+Δi(x−xi−1)であり、s0はデータ(xi,yi)の区分一次補間である。1≤i≤N−1に対して、s0のxiにおける左側の微分係数はΔi、右側の微分係数はΔi+1であり、ρi(0)=−6(Δi+1−Δi)/(hi+hi+1)はxiにおける傾きの跳びΔi+1−Δiの−6/(hi+hi+1)倍である。定理 2.2 (1)により、区分一次補間が三次スプラインであることはΔ1=⋯=ΔNと同値である。
3 二階微分の二乗積分の最小性
定理 3.1.N∈N≥1とし、実数a=x0<⋯<xN=bと実数y0,…,yNをとる。
- sをデータ(xi,yi)の自然スプラインとし、g:[a,b]→Rをg(xi)=yi(0≤i≤N)を満たすC2級の関数とする。このとき
∫ab(g′′)2dx=∫ab(s′′)2dx+∫ab(g′′−s′′)2dx
が成り立つ。特に∫ab(g′′)2dx≥∫ab(s′′)2dxであり、等号が成り立つのはg=sのときに限る。
- 実数da,dbをとり、sを端点の傾きda,dbをもつデータ(xi,yi)の端点微分指定スプラインとし、g:[a,b]→Rをg(xi)=yi(0≤i≤N)、g′(a)=da、g′(b)=dbを満たすC2級の関数とする。このとき(1)の等式、不等式および等号の条件が成り立つ。
証明.e:=g−sと置く。eはC2級であり、e(xi)=0(0≤i≤N)である。1≤i≤Nについて、[xi−1,xi]上でs=piを満たす次数3以下の多項式piをとると、pi′′′は定数κiであり、部分積分により
∫xi−1xis′′e′′dx=[pi′′e′]xi−1xi−κi∫xi−1xie′dx=s′′(xi)e′(xi)−s′′(xi−1)e′(xi−1)−κi(e(xi)−e(xi−1))である。e(xi)=e(xi−1)=0であり、iについて和をとると
∫abs′′e′′dx=s′′(b)e′(b)−s′′(a)e′(a)である。(1)の仮定ではs′′(a)=s′′(b)=0であり、(2)の仮定ではe′(a)=g′(a)−s′(a)=0、e′(b)=0であるから、どちらの場合も∫abs′′e′′dx=0である。g′′=s′′+e′′から
∫ab(g′′)2dx=∫ab(s′′)2dx+2∫abs′′e′′dx+∫ab(e′′)2dx=∫ab(s′′)2dx+∫ab(g′′−s′′)2dxを得る。等号∫ab(g′′)2dx=∫ab(s′′)2dxが成り立つならば、(e′′)2は非負の連続関数で積分が0であるからe′′=0であり、eは一次以下の多項式である。e(a)=e(b)=0とa<bからe=0、すなわちg=sである。▨
4 一様格子での誤差
補題 4.1.c∈R、h>0とし、f:[c,c+h]→RをC4級の関数とする。qを、(y0,y1,M0,M1)=(f(c),f(c+h),f′′(c),f′′(c+h))に対する補題 2.1の多項式pとする。このとき任意のx∈[c,c+h]に対して
∣f(x)−q(x)∣≤64h4ξ∈[c,c+h]max∣f(4)(ξ)∣が成り立つ。
証明.Mc:=maxξ∈[c,c+h]∣f(4)(ξ)∣と置く。補題 2.1 (1)によりq′′は次数1以下の多項式であってq′′(c)=f′′(c)、q′′(c+h)=f′′(c+h)を満たすので、q′′は節点c,c+hにおけるf′′の補間多項式である。f′′はC2級であるから、§E20.12 定理 2.2 (2)をn=1として適用して、任意のξ∈[c,c+h]に対して
∣f′′(ξ)−q′′(ξ)∣≤2Mc(ξ−c)(c+h−ξ)≤8Mch2である。r:=f−qはC2級であり、r(c)=r(c+h)=0であるから、節点c,c+hにおけるrの補間多項式は0である。§E20.12 定理 2.2 (1)をn=1としてrに適用すると、各x∈[c,c+h]に対してξ∈(c,c+h)が存在してr(x)=r′′(ξ)(x−c)(x−c−h)/2である。r′′=f′′−q′′と(x−c)(c+h−x)≤h2/4から∣r(x)∣≤21⋅4h2⋅8Mch2=Mch4/64を得る。▨
証明.Fi:=f′′(xi)と置く。§D1.16 定理 2.1をfに四次の剰余で、f′′に二次の剰余で適用する。1≤i≤N−1とする。一様格子ではμi=λi=1/2であり、
ρi(F)=2Fi−1+4Fi+Fi+1−h23(yi+1−2yi+yi−1)である。xiを中心とする展開により、xi−1とxi+1の間の点η±,ζ±が存在して
Fi±1=Fi±hf′′′(xi)+2h2f(4)(η±),yi±1=yi±hf′(xi)+2h2Fi±6h3f′′′(xi)+24h4f(4)(ζ±)が成り立つ(複号同順)。これを代入して
ρi(F)=4h2(f(4)(η+)+f(4)(η−))−8h2(f(4)(ζ+)+f(4)(ζ−))であり、∣ρi(F)∣≤h2M/2+h2M/4=3h2M/4である。ρ0c(F)=2F0+F1−6(y1−y0−hf′(a))/h2である。aを中心とする展開により、(a,x1)の点η,ζが存在して
F1=F0+hf′′′(a)+2h2f(4)(η),y1−y0−hf′(a)=2h2F0+6h3f′′′(a)+24h4f(4)(ζ)であり、ρ0c(F)=h2f(4)(η)/2−h2f(4)(ζ)/4、∣ρ0c(F)∣≤3h2M/4である。ρNc(F)=FN−1+2FN−6(hf′(b)−yN+yN−1)/h2である。bを中心とする展開により、(xN−1,b)の点η′,ζ′が存在して
FN−1=FN−hf′′′(b)+2h2f(4)(η′),hf′(b)−yN+yN−1=2h2FN−6h3f′′′(b)+24h4f(4)(ζ′)であり、ρNc(F)=h2f(4)(η′)/2−h2f(4)(ζ′)/4、∣ρNc(F)∣≤3h2M/4である。AcF−rcの成分はρ0c(F)、ρi(F)(1≤i≤N−1)、ρNc(F)であるから、第一の評価を得る。AnF−rnの成分はF0=f′′(a)、ρi(F)(1≤i≤N−1)、FN=f′′(b)であるから、第二の評価を得る。▨
証明.(1)を示す。1≤i≤Nについて、[xi−1,xi]上のsFは、c=xi−1、(y0,y1,M0,M1)=(f(xi−1),f(xi),f′′(xi−1),f′′(xi))に対する補題 2.1の多項式である。補題 4.1を[xi−1,xi]上のfに適用して、supx∈[a,b]∣f(x)−sF(x)∣≤h4M/64を得る。系 2.3 (1)と定理 2.2 (4)により
x∈[a,b]sup∣sF(x)−sm^(x)∣≤8h2∥F−m^∥∞≤8h2∥A(F−m^)∥∞≤8h2(∥AF−r∥∞+∥Am^−r∥∞)である。二つの評価を三角不等式で合わせて主張を得る。
(2)を示す。定理 2.2 (2)によりsc=smであり、mはAcm=rcの解であって、定理 2.2 (1)によりmi=sc′′(xi)である。定理 2.2 (4)と補題 4.2により∥m−F∥∞≤∥AcF−rc∥∞≤3h2M/4である。(1)をm^=mとして適用すると、∥Acm−rc∥∞=0であるから、sup∣f−sc∣≤h4M/64+3h4M/32=7h4M/64である。
(3)を示す。定理 2.2 (3)によりsn=smであり、mはAnm=rnの解であって、定理 2.2 (1)によりmi=sn′′(xi)である。定理 2.2 (4)と補題 4.2により∥m−F∥∞≤max{3h2M/4,D}である。(1)をm^=mとして適用し、max{3h2M/4,D}≤3h2M/4+Dを用いると、sup∣f−sn∣≤h4M/64+3h4M/32+h2D/8=7h4M/64+h2D/8である。f′′(a)=f′′(b)=0ならばD=0である。▨
例 4.4.[a,b]=[0,1]、N∈N≥1、h=1/N、f(x)=x2とする。f′′=2、f(4)=0であり、補題 4.2の記号でM=0、D=2である。fはC2級で各小区間上で次数2の多項式であり、f′(0)=0、f′(1)=2を満たすので、端点の傾き0,2をもつfの端点微分指定スプラインは、定理 2.2 (2)の一意性によりf自身である。自然スプラインsn=smについて、e:=F−mと置く。補題 4.2によりρi(F)=0(1≤i≤N−1)であるから、Ane=AnF−rn=(2,0,…,0,2)であり、定理 2.2 (4)により∥e∥∞≤2、e0=eN=2である。N≥2ならば、Aneの第1成分は(e0+4e1+e2)/2=0であるからe1=−(2+e2)/4∈[−1,0]である。N=1ならばe1=eN=2である。fは各小区間上で次数2の多項式であるから、補題 2.1 (1)の一意性によりf=sFであり、[0,h]上のf−sn=sF−smは、補題 2.1のpでc=0、(y0,y1,M0,M1)=(0,0,e0,e1)としたものであり、x=h/2(t=1/2)で
f(2h)−sn(2h)=6h2(−83)(e0+e1)=−16h2(2+e1)である。2+e1≥1であるから、定理 4.3 (3)と合わせて
16h2≤x∈[0,1]sup∣f(x)−sn(x)∣≤4h2が任意のN∈N≥1で成り立つ。f∈C4[0,1]であるが、任意の実数Cに対して、C≤0ならば任意のN∈N≥1で、C>0ならばN>4Cを満たすNでsupx∈[0,1]∣f(x)−sn(x)∣≥h2/16>Ch4が成り立つ。N=4ではm=(0,18/7,12/7,18/7,0)、e1=−4/7であり、∣f(1/8)−sn(1/8)∣=5/896である。
例 4.5.[a,b]=[0,1]、h=1/N、f(x)=sinπxとする。f′′(0)=f′′(1)=0、M=π4であるから、定理 4.3 (3)によりfの自然スプラインsnはsup∣f−sn∣≤7π4h4/64<10.66h4を満たす。各小区間を1600等分した点で∣f−sn∣の最大値ENを倍精度で計算すると、次のとおりである。
| N |
EN |
EN/2/EN |
EN/h4 |
| 4 |
1.07×10−3 |
— |
0.273 |
| 8 |
6.31×10−5 |
16.9 |
0.259 |
| 16 |
3.89×10−6 |
16.2 |
0.255 |
| 32 |
2.42×10−7 |
16.1 |
0.254 |
ENは有限個の点での値であり、supx∈[0,1]∣f(x)−sn(x)∣の下界である。定理 4.3 (3)は上界10.66h4だけを与え、比EN/2/ENが16に近づくことは、あるκ>0に対する下界sup∣f−sn∣≥κh4を別に証明しないかぎり、この表からは観察にとどまる。
5 演習
解答.
t=(x−c)/hはxの一次式であるから、pは次数3以下の実係数多項式である。t=0で(1−t)3−(1−t)=0、t3−t=0であるからp(c)=y0であり、t=1でも両者は0であるからp(c+h)=y1である。dt/dx=1/hであり、tについて((1−t)3−(1−t))′′=6(1−t)、(t3−t)′′=6tであるから
p′′(x)=h21⋅6h2(6M0(1−t)+6M1t)=(1−t)M0+tM1である。p~をpと同じ四つの値をもつ次数3以下の実係数多項式とし、d:=p−p~と置く。d′′は次数1以下の多項式でありd′′(c)=d′′(c+h)=0であるからd′′=0である。したがってdは次数1以下の多項式であり、d(c)=d(c+h)=0からd=0である。これで補題 2.1 (1)は示された。
tについて((1−t)3−(1−t))′=1−3(1−t)2、(t3−t)′=3t2−1であるから
p′(x)=h1(y1−y0+6h2(M0(1−3(1−t)2)+M1(3t2−1)))である。t=0を代入してp′(c)=(y1−y0)/h+h(−2M0−M1)/6、t=1を代入してp′(c+h)=(y1−y0)/h+h(M0+2M1)/6を得る。これで補題 2.1 (2)は示された。
x∈[c,c+h]ならばt∈[0,1]であり、(1−t)3−(1−t)=−t(1−t)(2−t)≤0、t3−t=−t(1−t)(1+t)≤0であるから
(1−t)3−(1−t)+∣t3−t∣=t(1−t)((2−t)+(1+t))=3t(1−t)≤43である。∣(1−t)y0+ty1∣≤(1−t)∣y0∣+t∣y1∣≤max{∣y0∣,∣y1∣}と合わせて
∣p(x)∣≤max{∣y0∣,∣y1∣}+6h2⋅43max{∣M0∣,∣M1∣}=max{∣y0∣,∣y1∣}+8h2max{∣M0∣,∣M1∣}を得る。これで補題 2.1 (3)は示された。▨
問題 5.2.N∈N≥1とし、実数a=x0<⋯<xN=bと実数y0,…,yNをとる。snをデータ(xi,yi)の自然スプラインとし、da:=sn′(a)、db:=sn′(b)と置く。端点の傾きda,dbをもつデータ(xi,yi)の端点微分指定スプラインはsnに等しいことを示せ。
解答.
定理 2.2 (3)によりsnはただ一つ存在し、データ(xi,yi)を補間する三次スプラインであるからC2級であって、da,dbは定まる。sn′(a)=da、sn′(b)=dbであるから、snは端点の傾きda,dbをもつデータ(xi,yi)の端点微分指定スプラインである。定理 2.2 (2)により、端点の傾きda,dbをもつデータ(xi,yi)の端点微分指定スプラインはただ一つであるから、それはsnに等しい。▨