ニュートンの前進差分公式の導出
📂数値解析ニュートンの前進差分公式の導出
式
異なるx0,⋯,xnのデータ(x0,f(x0)),⋯,(xn,f(xn))について
pn(x)=i=0∑nf[x0,⋯,xi]j=0∏i−1(x−xj)
説明
複雑に見えるが、n=0,1,2について実際に展開してみると、次のように単純に表される。
p0(x)=p1(x)=p2(x)=f(x0)f(x0)+(x−x0)f[x0,x1]f(x0)+(x−x0)f[x0,x1]+(x−x0)(x−x1)f[x0,x1,x2]
ニュートンの差分公式は、差分法を使って多項式補間を表す方法で、ラグランジュの公式に比べて複雑に見えるが、データが追加されるにつれて更新をする必要がある場合は、はるかに便利だ。ニュートンの差分公式を再帰的に表現すると
pn(x)=pn−1(x)+f[x0,⋯,xn]i=0∏n−1(x−xi)
のような形になるが、ラグランジュの公式しかなかったら、pn−1をすでに知っているにも関わらず、また(n+1)×(n+1)サイズの逆行列を計算しなければならない手間がある。どのような計算方法であれ、結果自体はラグランジュの公式と全く同じであるため、追加されるデータが少ない場合はニュートンの差分公式が便利に使える。
また、ラグランジュの公式と正確に同じでありながらも異なる形を持っていることを利用して、差分に関する様々な便利な定理を証明できる。
導出
戦略: pnとpn−1の差をCとすると、pnとCの最高次項の係数は同じでなければならないので、Cの係数だけを計算して、間接的に再帰式を導出する。
pn(x)=pn−1(x)+C(x)とした場合、degC=nであり、i=0,⋯,(n−1)に対して
pn(xi)=f(xi)=pn−1(xi)
であるため、ある定数an=0について
C(x)=an(x−x0)⋯(x−xn−1)
のように表される。pnとCの最高次項は同じであるため、an=f[x0,⋯,xn]が成立することを示せばよい。データ{x0,⋯,xk}からxkを抜いたデータ{x0,⋯,xk−1}で得られた多項式補間をLk−1(x)、x0を抜いたデータ{x1,⋯,xk}で得られた多項式補間をRk−1(x)としよう。各アルファベットは左Leftと右Rightを意味する。これに対してpkを次のように置く。
pk(x):=xk−x0(x−x0)Rk−1(x)−(x−xk)Lk−1(x)
すると、i=1,⋯,k−1について
pk(x0)=Lk−1(x0)=f(x0)
pk(xi)=Lk−1(xi)=Rk−1(xi)=f(xi)
pk(xk)=Rk−1(xk)=f(xk)
したがって、pkは与えられたデータをうまく補間することが保証される。pkの最高次項の係数をakとすると、ak=f[x0,⋯,xk]が数学的帰納法で示される。
k=1のとき
p1(x)=x1−x0(x−x0)f(x1)−(x−xk)f(x0)(x)
であるため、最高次項xの係数は
a1=x1−x0f(x1−x0)=f[x0,x1]
k>1のときak−1=f[x0,⋯,xk−1]が成立すると仮定すると、Lk−1の最高次項の係数はf[x0,⋯,xk−1]であり、Rk−1の最高次項の係数はf[x1,⋯,xk]である。pkの分数形を解くと
pk(x)=xk−x0Rk−1(x)−Lk−1(x)x+xk−x0xkLk−1(x)−x0Rk−1(x)
したがって、pk(x)の最高次項の係数は
ak=xk−x0f[x1,⋯,xk]−f[x0,⋯,xk−1]=f[x0,⋯,xk]
数学的帰納法により、すべての自然数 nに対して
an=f[x0,⋯,xn]
■