logo

エルミート-ジェノッキ公式 📂数値解析

エルミート-ジェノッキ公式

公式

異なるx0,,xnx_{0}, \cdots , x_{n}に対してfCn(H{x0,,xn})f \in C^{n} \left( \mathscr{H} \left\{ x_{0}, \cdots , x_{n} \right\} \right)としよう。すると、標準シンプレックスにおいて τn:={(t1,,tn):ti0i=1tti1} \tau_{n} := \left\{ ( t_{1} , \cdots , t_{n} ) : t_{i} \ge 0 \land \sum_{i=1}^{t} t_{i} \le 1 \right\} t0=1i=1nti\displaystyle t_{0} = 1 - \sum_{i=1}^{n} t_{i}に関して、次が成り立つ。 f[x0,,xn]=τnf(n)(t0x0++tnxn)dt1dtn f [ x_{0}, \cdots , x_{n} ] = \int \cdots \int_{\tau_{n}} f^{(n)} ( t_{0} x_{0} + \cdots + t_{n} x_{n} ) dt_{1} \cdots dt_{n}


  • H{a,b,c,}\mathscr{H} \left\{ a,b,c, \cdots \right\}は、a,b,c,a,b,c, \cdotsを含む最小の区間を表す。

説明

エルミート-ジェノッキ公式hermite Genocchi formulaは、複雑な数式で説明されるものとは異なり、階差をより自由に使用できるように一般化している。ある意味で、エルミート-ジェノッキ公式によって新しく定義される階差が本物であり、従来の階差がこの新しい階差を理解しやすく表現したものと言えるだろう。

重複したデータと微分係数

もし階差f[xi,,xin+1]f [ \underbrace{ x_{i} , \cdots , x_{i} }_{ n+1 } ]が存在できるなら、i=0nti=1\displaystyle \sum_{i=0}^{n} t_{i} = 1であるため t0x0++tnxn=t0xi++tnxi=xi t_{0} x_{0} + \cdots + t_{n} x_{n} = t_{0} x_{i} + \cdots + t_{n} x_{i} = x_{i} が適用され、f(n)(xi)f^{(n)} ( x_{i} )は定数として扱われ、積分の外に出てくるため f[xi,,xin+1]=f(n)(xi)τn1dt1dtn f [ \underbrace{ x_{i} , \cdots , x_{i} }_{ n+1 } ] = f^{(n)} ( x_{i} ) \int \cdots \int_{\tau_{n}} 1 dt_{1} \cdots dt_{n} が成り立つべきである。

20190412\_154846.png

一方、積分範囲τn\tau_{n}33次元まで示すと、上の画像のように標準シンプレックスで表される領域を示す。これらの体積τn1dt1dtn\displaystyle \int \cdots \int_{\tau_{n}} 1 dt_{1} \cdots dt_{n}はシンプルにvol(τn)=1n!\displaystyle \text{vol} ( \tau_{n} ) = {{1} \over {n!}}として計算されるので f[xi,,xin+1]=1n!f(n)(xi) f [ \underbrace{ x_{i} , \cdots , x_{i} }_{ n+1 } ] = {{1} \over {n!}} f^{(n)} ( x_{i} ) である。これはx0,,xnx_{0}, \cdots , x_{n}がすべて同じ場合で、元々の階差の定義 f[x0,,xn]:=f[x1,,xn]f[x0,xn1]xnx0 f [ x_{0} , \cdots , x_{n} ] : = {{ f [ x_{1} , \cdots , x_{n} ] - f [ x_{0} , x_{n-1} ] } \over { x_{n} - x_{0} }} によると分母が00になってしまい、事実上ありえない計算になる。しかし、エルミート-ジェノッキ公式は、そうしたことを気にせず、次のような帰結を持つ。

  • [3]’: f[xi,xi]=f(xi)f [ x_{i} , x_{i} ] = f ' ( x_{i} )
  • [4]’: f[xi,,xin+1]=1n!f(n)(xi)f [ \underbrace{ x_{i} , \cdots , x_{i} }_{ n+1 } ] = {{1} \over {n!}} f^{(n)} ( x_{i} )

また、この議論から見ると、すべてのノードが同じである必要はない。階差を使用する理由は、微分係数を数式的に求めるのが難しいからであるが、微分係数に関する情報が少しでもあれば、それを最大限に活用する方が良い。例として、 f[x0,x1,x1]=f(x1)f(x1)x1x1f[x1,x0]x1x0 f[x_{0}, x_{1}, x_{1}] = {{ {{ f(x_{1}) - f(x_{1}) } \over { x_{1} - x_{1} }} - f [ x_{1} , x_{0} ] } \over { x_{1} - x_{0} }} のような形があると考えてみよう。もちろん、この式は数学的に意味をなさないが、概念的には f(x1)f(x1)x1x1limh0f(x1+h)f(x1)(x1+h)x1=f(x1) {{ f(x_{1}) - f(x_{1}) } \over { x_{1} - x_{1} }} \equiv \lim_{h \to 0} {{ f(x_{1} + h) - f(x_{1}) } \over { ( x_{1} + h ) - x_{1} }} = f '(x_{1}) のような主張が全く馬鹿げているわけではない。だから、 f[x0,x1,x1]=f(x1)f[x1,x0]x1x0 f[x_{0}, x_{1}, x_{1}] = {{ f '(x_{1}) - f [ x_{1} , x_{0} ] } \over { x_{1} - x_{0} }} のように、微分係数があればそれを使い、なければそのままで良いのである。ノードの重複を許す一般化はここで止まらず、微分に対する可能性まで開いている。例えばf[x0,x1,x]f[x_{0} , x_{1}, x]のようにまだ固定されていない変数xxがある時、この階差をxxに関して微分すると ddxf[x0,x1,x]=limhf[x0,x1,x+h]f[x0,x1,x]h {{ d } \over { dx }} f[x_{0} , x_{1}, x] = \lim_{h \to \infty} {{ f[x_{0} , x_{1}, x+h] - f[x_{0} , x_{1}, x] } \over { h }} 階差はノードの順序に関係なく常に同じなので ddxf[x0,x1,x]=limhf[x0,x1,x+h]f[x,x0,x1](x+h)x {{ d } \over { dx }} f[x_{0} , x_{1}, x] = \lim_{h \to \infty} {{ f[x_{0} , x_{1}, x+h] - f[ x, x_{0} , x_{1}] } \over { (x+h) - x }} 階差の定義によると ddxf[x0,x1,x]=limhf[x,x0,x1,x+h]=f[x,x0,x1,x] {{ d } \over { dx }} f[x_{0} , x_{1}, x] = \lim_{h \to \infty} f[x, x_{0} , x_{1}, x+h] = f[x, x_{0} , x_{1}, x] これをx0,,xnx_{0}, \cdots , x_{n}に関して一般化すると f[x0,,xn,x]=f[x,x0,,xn,x] f’[x_{0}, \cdots , x_{n}, x] = f[x, x_{0}, \cdots , x_{n}, x] 階差をxxに関して微分するとxxがもう一つ増えると要約できる。このような事実は、階差に入るノードが多いほど、多くの微分を取ったと見ることができる点で直感とよく合っている。

導出 1

導出自体は、数学的帰納法を使って比較的簡単に行うことができるが、式が長く、インデックスを使う際に汚い部分が多いため、ここでは省略する。ただの事実として受け入れて進むことをお勧めする。


  1. Atkinson. (1989). An Introduction to Numerical Analysis(2nd Edition): p145~146. ↩︎