複数の点を使用した有限差分の導出
📂数値解析複数の点を使用した有限差分の導出
定理
N番の微分可能な関数 f:R→R が与えられているとする。ある点 t∈R での d<N回目の微分の関数値 f(d)(t) は、十分に小さい h>0 に対して、基数がn∈N の有限集合 S⊂Z と同じ数の点 {t+kh:k∈S} を使って、以下のように近似できる。
f(d)(t)≈k∈S∑ckf(t+kh)
ここで、{ck1,⋯,ckn} は次のように求められる。
ck1⋮ckn=k10⋮k1N−1⋯⋱⋯kn0⋮knN−1−1hdd!δ0,d⋮δN−1,d
ここで、点 {t+kh:k∈S} を ステンシルポイントと呼ぶこともある。
- X−1 は逆行列である。
- x! は階乗である。
- δij={10,if i=j,if i=j はクロネッカーのデルタである。
説明
f′(t)≈hf(t+h)−f(t)
離散化されたデータしかなく、実際の関数がないか、あるいは微分が困難な場合は、上記のように平均変化率を参照するしかない。しかし、密接に連結した二点の情報を使用するのではなく、次のように左右の二点を使用することもできる。
f′(t)≈2hf(t+h)−f(t−h)
一般的に、より多くの点を使用すると精度が上がり、データが悪ければ悪いほど、このような計算に依存する状況が生じるかもしれない。
証明
戦略:元の文書と同様に、例のように簡単に示されているだけである。テイラーの定理を通じて連立方程式を立てると終わりだ。
例えば、f(4)(t) を計算するために、次のように5つの点を使用すると考えてみよう。私たちの目標は、次のようにうまく近似する{c−2,⋯,c2} を見つけることである。
f(4)(t)≈c−2f(t−2h)+c−1f(t−1h)+c0f(t)+c1f(t+h)+ck2f(t+2h)
ここで、各f(t+kh)は、テイラーの定理に従って次のように展開される。
==f(4)(t)c−2[f(t)+f′(t)(−2h)+2f′′(t)(−2h)2+6f(3)(t)(−2h)3+24f(4)(t)(−2h)4]+c−1[f(t)+f′(t)(−h)+2f′′(t)(−h)2+6f(3)(t)(−h)3+24f(4)(t)(−h)4]+c0f(t)+c1[f(t)+f′(t)h+2f′′(t)h2+6f(3)(t)h3+24f(4)(t)h4]+c2[f(t)+f′(t)(2h)+2f′′(t)(2h)2+6f(3)(t)(2h)3+24f(4)(t)(2h)4]+O(h5)[c−2+c−1+c0+c1+c2]f(t)+[−2c−2−c−1+0c0+c1+2c2]hf′(t)+[4c−2+c−1+0c0+c1+4c2]2h2f′′(t)+[−8c−2−c−1+0c0+c1+8c2]6h3f(3)(t)+[16c−2+c−1+0c0+c1+16c2]24h4f(4)(t)+O(h5)
いつものように、O(h5)は十分に小さくして捨てる。そしてf(t)、f’(t)、f′′(t)、f(3)(t)、f(4)(t) が何であれ、上の近似式が成り立つには、
[c−2+c−1+c0+c1+c2]=[−2c−2−c−1+0c0+c1+2c2]=[4c−2+c−1+0c0+c1+4c2]=[−8c−2−c−1+0c0+c1+8c2]=[16c−2+c−1+0c0+c1+16c2]h4f(4)(t)=000024f(4)(t)
を満たせばよい。行列の形に簡単に変えてみると、
=1−24−8161−11−111000011111124816c−2c−1c0c1c2(−2)0(−2)1(−2)2(−2)3(−2)4(−1)0(−1)1(−1)2(−1)3(−1)4(0)0(0)1(0)2(0)3(0)4(1)0(1)1(1)2(1)3(1)4(2)0(2)1(2)2(2)3(2)4c−2c−1c0c1c2=h4100004!
最後の行で、左辺は定理で見た通りの形で、右辺では、私たちが興味を持つd番目の行を除き、すべて0 になってしまったことを確認できる。左辺の行列を右辺に移すと、私たちが欲しかった近似式を得る。
■
例えば、{−3,−1,0,1}の4つの点を使用して2次の微分を近似したい場合は、以下の行列方程式を使用すればよい。
=(−3)0(−3)1(−3)2(−3)3(−3)4(−1)0(−1)1(−1)2(−1)3(−1)4(0)0(0)1(0)2(0)3(0)4(1)0(1)1(1)2(1)3(1)4c−3c−1c0c11−39−27811−11−111000011111c−3c−1c0c1=h21002!0
そして、以下を得るように解く。直接計算はとても難しいので、コンピューターの力を借りよう。
f′′(t)≈=[c−3f(t−3h)+c−1f(t−h)+c0f(t)+c1f(t+h)]h21[0f(t−3h)+f(t−h)−2f(t)+f(t+h)]
精度
じっくり見せていないが、その精度はO(hn−d)とされていて、ステンシルポイントを多く使用するほど精確になり、微分の数を増やすほど、コストが高くなると言われている。
テーブル




関連項目