有限差分

数学における有限差分（ゆうげんさぶん、英: finite difference）はf(x + b) − f(x + a) なる形の式を総称して言う[要出典]。有限差分を b − a で割れば、差分商が得られる。微分を有限差分で近似することは、微分方程式（特に境界値問題）の数値的解法である有限差分法において中心的な役割を果たす。 ある種の漸化式は多項間の関係式を有限差分で置き換えて差分方程式にすることができる。 今日では「有限差分」の語は、特に数値解法の文脈において、微分の有限差分近似の同義語としてもよく用いられる。有限差分近似は冒頭の用語法に則れば有限差分商のことである。 有限差分それ自体も、抽象的な数学的対象として研究の主題となり得るものである。例えばジョージ・ブール (1860), ルイ・メイヴィル・ミルン゠トムソン（英語版） (1933), カロリー・ヨルダン（ドイツ語版） (1939) らの業績があり、それはアイザック・ニュートンにまで遡れる。そのような観点で言えば、有限差分に関する形式的な計算は無限小に関する計算の代替となるものである。 主に前進、後退、中心差分の三種類が広く用いられる。 前進差分 Δ h [ f ] ( x ) = f ( x + h ) − f ( x ) . {\displaystyle \Delta _{h}[f](x)=f(x+h)-f(x).} 後退差分 ∇ h [ f ] ( x ) = f ( x ) − f ( x − h ) . {\displaystyle \nabla _{h}[f](x)=f(x)-f(x-h).} 中心差分 δ h [ f ] ( x ) = f ( x + 1 2 h ) − f ( x − 1 2 h ) . {\displaystyle \delta _{h}[f](x)=f(x+{\tfrac {1}{2}}h)-f(x-{\tfrac {1}{2}}h).} 応用の場面に応じて、歩み h は変数と見ることも定数と見ることもある。添字の h を省略したときは、h = 1 の意味（Δ[f](x) = Δ1[f](x)など）である。 函数 f の点 x における微分は函数の極限 f ′ ( x ) = lim h → 0 f ( x + h ) − f ( x ) h {\displaystyle f'(x)=\lim _{h\to 0}{\frac {f(x+h)-f(x)}{h}}} で定義される。ここで h を零に近づける代わりに非負の値に固定すれば、右辺は f ( x + h ) − f ( x ) h = Δ h [ f ] ( x ) h {\displaystyle {\frac {f(x+h)-f(x)}{h}}={\frac {\Delta _{h}[f](x)}{h}}} と書けるから、これは h が小さいとき、歩み h の前進差分が微分を近似するものであることを意味する。この近似の誤差はテイラーの定理から評価することができる。実際、f が微分可能であると仮定すれば Δ h [ f ] ( x ) h − f ′ ( x ) = O ( h ) → 0 ( as  h → 0 ) {\displaystyle {\frac {\Delta _{h}[f](x)}{h}}-f'(x)=O(h)\to 0\quad ({\text{as }}h\to 0)} であり、前進差分に関しても同じ式 ∇ h [ f ] ( x ) h − f ′ ( x ) = O ( h ) → 0 ( as  h → 0 ) {\displaystyle {\frac {\nabla _{h}[f](x)}{h}}-f'(x)=O(h)\to 0\quad ({\text{as }}h\to 0)} が満足される。中心差分を用いればより精密な近似が可能で、f が二回微分可能ならば δ h [ f ] ( x ) h − f ′ ( x ) = O ( h 2 ) {\displaystyle {\frac {\delta _{h}[f](x)}{h}}-f'(x)=O(h^{2})} が成り立つ。しかし中心差分法の主な問題は、振動する函数の微分が零ということになってしまう場合があることである。例えば、奇数の n に対して f(nh) = 1 かつ偶数の n に対して f(nh) = 2 とすれば、中心差分法で計算すると f'(nh) = 0 となる。これは f の定義域が離散の場合に特に問題になる。 「有限差分」を有限差分近似の意味で用いる文献では、「前進・後退・中心差分」は（前節の意味ではなく）本節で言う商として定義される。 微分の有限差分近似と対応して、高階微分の有限差分近似が得られる。例えば、中心差分の式を f'(x+h/2) と f'(x−h/2) に対して考え、f' の微分の中心差分近似に適用すれば、f の二回微分の近似式として 二階中心差分 f ″ ( x ) ≈ δ h 2 [ f ] ( x ) h 2 = f ( x + h ) − 2 f ( x ) + f ( x − h ) h 2 {\displaystyle f''(x)\approx {\frac {\delta _{h}^{2}[f](x)}{h^{2}}}={\frac {f(x+h)-2f(x)+f(x-h)}{h^{2}}}} が得られる。同様にほかの差分公式を繰り返し適用すれば 二階前進差分 f ″ ( x ) ≈ Δ h 2 [ f ] ( x ) h 2 = f ( x + 2 h ) − 2 f ( x + h ) + f ( x ) h 2 . {\displaystyle f''(x)\approx {\frac {\Delta _{h}^{2}[f](x)}{h^{2}}}={\frac {f(x+2h)-2f(x+h)+f(x)}{h^{2}}}.} なども得られる。より一般にn-階前進、後退、中心差分はそれぞれ n-階前進差分 Δ h n [ f ] ( x ) = ∑ i = 0 n ( − 1 ) i ( n i ) f ( x + ( n − i ) h ) , {\displaystyle \Delta _{h}^{n}[f](x)=\sum _{i=0}^{n}(-1)^{i}{\binom {n}{i}}f(x+(n-i)h),} Δ n [ f ] ( x ) = ∑ k = 0 n ( n k ) ( − 1 ) n − k f ( x + k ) ( for  h = 1 ) . {\displaystyle \Delta ^{n}[f](x)=\sum _{k=0}^{n}{\binom {n}{k}}(-1)^{n-k}f(x+k)\quad ({\text{for }}h=1).} n-階後退差分 ∇ h n [ f ] ( x ) = ∑ i = 0 n ( − 1 ) i ( n i ) f ( x − i h ) , {\displaystyle \nabla _{h}^{n}[f](x)=\sum _{i=0}^{n}(-1)^{i}{\binom {n}{i}}f(x-ih),} n-階中心差分 δ h n [ f ] ( x ) = ∑ i = 0 n ( − 1 ) i ( n i ) f ( x + ( n 2 − i ) h ) {\displaystyle \delta _{h}^{n}[f](x)=\sum _{i=0}^{n}(-1)^{i}{\binom {n}{i}}f\left(x+\left({\frac {n}{2}}-i\right)h\right)} で与えられる。上記において、(n i) は二項係数である（各 i に対する係数はパスカルの三角形の各行で与えられる）。 中心差分においては n が奇数のとき h が非整数倍されることに留意すべきである。これは離散化の幅を変えることになるため、しばしば問題になる。この問題は δn[f](x − h/2) と δn[f](x + h/2) との平均をとることで除くことができる。 数列に前進差分を施すことを、その数列の二項変換（英語版）と呼ぶことがあり、組合せ論的に興味深い様々な性質がある。前進差分をネールント–ライス積分を用いて評価することができる。このような種類の級数に対する積分表現は、積分が漸近展開や鞍点法で評価されることがしばしばあり、重要である（対照的に前進差分級数は、大きな n に対しては二項係数が急速に増大するため、数値的に評価することが極めて難しい）。 これら高階差分と微分との関係はそれぞれ直接的に d n f d x n ( x ) = Δ h n [ f ] ( x ) h n + O ( h ) = ∇ h n [ f ] ( x ) h n + O ( h ) = δ h n [ f ] ( x ) h n + O ( h 2 ) {\displaystyle {\frac {d^{n}f}{dx^{n}}}(x)={\frac {\Delta _{h}^{n}[f](x)}{h^{n}}}+O(h)={\frac {\nabla _{h}^{n}[f](x)}{h^{n}}}+O(h)={\frac {\delta _{h}^{n}[f](x)}{h^{n}}}+O(h^{2})} となる。高階微分はより良い近似を構成するためにも利用できる。上で述べたように、一階差分近似は h のオーダーの項を除いて一階微分を近似するものであるが、高階微分を組み合わせた Δ h [ f ] ( x ) − 1 2 Δ h 2 [ f ] ( x ) h = − f ( x + 2 h ) − 4 f ( x + h ) + 3 f ( x ) 2 h {\displaystyle {\frac {\Delta _{h}[f](x)-{\frac {1}{2}}\Delta _{h}^{2}[f](x)}{h}}=-{\frac {f(x+2h)-4f(x+h)+3f(x)}{2h}}} は f'(x) と h2 のオーダーの項しか違わない。これを示すには、先述のようにテイラー級数展開してもよいし、後述のように有限差分の汎函数計算を用いてもよい。 必要ならば、前進・後退・中心差分を混合して任意の点を有限差分の中心にすることができる。 任意の正整数 k, n に対して Δ k h n ( f , x ) = ∑ i 1 = 0 k − 1 ∑ i 2 = 0 k − 1 ⋯ ∑ i n = 0 k − 1 Δ h n ( f , x + i 1 h + i 2 h + ⋯ + i n h ) . {\displaystyle \Delta _{kh}^{n}(f,x)=\sum \limits _{i_{1}=0}^{k-1}\sum \limits _{i_{2}=0}^{k-1}\cdots \sum \limits _{i_{n}=0}^{k-1}\Delta _{h}^{n}(f,x+i_{1}h+i_{2}h+\cdots +i_{n}h).} ライプニッツ則: Δ h n ( f g , x ) = ∑ k = 0 n ( n k ) Δ h k ( f , x ) Δ h n − k ( g , x + k h ) . {\displaystyle \Delta _{h}^{n}(fg,x)=\sum \limits _{k=0}^{n}{\binom {n}{k}}\Delta _{h}^{k}(f,x)\Delta _{h}^{n-k}(g,x+kh).} 有限差分の重要な応用として、数値解析、特に数値微分方程式論において、常微分および偏微分方程式の数値解を得る目的での利用が挙げられる。これは、微分方程式に現れる微分を、それを近似する有限差分で置き換えるという考え方である。これを有限差分法と呼ぶ。 有限差分法は、計算機科学や工学の熱工学や流体力学などといった分野においてよく応用される。 ニュートン級数はニュートンの前進差分方程式の項からなる。これは本質的にニュートン補間公式であり、1687年に著書『プリンキピア・マスマティカ』において最初に公表された。具体的には、連続的なテイラー展開の離散版 f ( x ) = ∑ k = 0 ∞ Δ k [ f ] ( a ) k ! ( x − a ) k = ∑ k = 0 ∞ ( x − a k )   Δ k [ f ] ( a ) {\displaystyle f(x)=\sum _{k=0}^{\infty }{\frac {\Delta ^{k}[f](a)}{k!}}(x-a)_{k}=\sum _{k=0}^{\infty }{x-a \choose k}~\Delta ^{k}[f](a)} が任意の多項式函数 f に対して成立する。これはさらに多くの（全てではない）解析函数でも成立する。ここで ( x k ) = ( x ) k k ! {\displaystyle {x \choose k}={\frac {(x)_{k}}{k!}}} は二項係数であり、 ( x ) k = x ( x − 1 ) ( x − 2 ) ⋯ ( x − k + 1 ) {\displaystyle (x)_{k}=x(x-1)(x-2)\cdots (x-k+1)} は下降階乗（下方階乗）である（空積 (x)0 は 1 とする）。これは後述する一般化において、x の変化の歩み (step) が h = 1 であると仮定した特別の場合である。 この結果とテイラーの定理との形式的な対応に注意せよ。歴史的には、これとファンデルモンド恒等式（英語版） ( x + y ) n = ∑ k = 0 n ( n k ) ( x ) n − k   ( y ) k {\displaystyle (x+y)_{n}=\sum _{k=0}^{n}{n \choose k}(x)_{n-k}~(y)_{k}} （二項定理に対応する）は、陰計算の体系に至る観察に含まれる。 p-進解析学において、マーラーの定理は f が多項式函数であるという仮定は単に連続であるという仮定に緩めることができることを述べる。 カールソンの定理（英語版）はニュートン級数が（存在すれば）一意であるための必要十分条件を与える。しかし一般にはニュートン級数の存在は保証されない。 ニュートン級数、スターリング補間多項式、セルバーグ多項式は、一般の差分多項式の特別の場合である。これらは全て適当にスケールされた前進差分の言葉で定義される。 In a compressed and slightly more general form and equidistant nodes the formula reads f ( x ) = ∑ k = 0 ( x − a h k ) ∑ j = 0 k ( − 1 ) k − j ( k j ) f ( a + j h ) . {\displaystyle f(x)=\sum _{k=0}{{\frac {x-a}{h}} \choose k}\sum _{j=0}^{k}(-1)^{k-j}{k \choose j}f(a+jh).} 前進差分を、函数 f を Δh[f] へ写す差分作用素と考えることができる。この作用素は、歩み h のシフト作用素 Th を用いて Δ h = T h − I {\displaystyle \Delta _{h}=T_{h}-I} という和に書くことができる。ここに、Th[f ](x) = f(x+h) および I は恒等作用素である。 高階の有限差分は再帰的に Δhn ≡ Δh (Δhn−1) と定義することができるが、これと同値な別定義として Δhn = [Th −I]n とすることもできる。 差分作用素 Δh は線型作用素であり、上で述べた特別なライプニッツ則 Δh(f(x)g(x)) = (Δhf(x)) g(x+h) + f(x) (Δhg(x)) を満足する。後退および中心差分に関しても同様のことが成立する。 h に関するテイラー級数を形式的に適用することで、等式 Δ h = h D + 1 2 h 2 D 2 + 1 3 ! h 3 D 3 + ⋯ = e h D − I {\displaystyle \Delta _{h}=hD+{\frac {1}{2}}h^{2}D^{2}+{\frac {1}{3!}}h^{3}D^{3}+\dotsb =e^{hD}-I} が得られる。ここで D は函数 f をその導函数 f' へ写す連続的な微分作用素である。十分小さな h に対して、この展開は両辺が解析函数に作用するとき有効である。従って Th = ehD であり、逆に冪指数に関して解いて h D = log ⁡ ( 1 + Δ h ) = Δ h − 1 2 Δ h 2 + 1 3 Δ h 3 + ⋯ {\displaystyle hD=\log(1+\Delta _{h})=\Delta _{h}-{\tfrac {1}{2}}\Delta _{h}^{2}+{\tfrac {1}{3}}\Delta _{h}^{3}+\dotsb } が得られる。この式は両辺が多項式に作用して同じ結果を与えるという意味において正しい。 解析函数に作用する場合でも、右辺の級数の収束は保証されず、漸近級数となり得る。しかし、微分に対するより精密な近似を得ることには利用できる。例えば、例えばこの級数の最初の二項だけを取り出せば、#高階差分の節の最後に述べた f'(x) の二階近似が導かれる。 後退および中心差分に対する同様の公式は h D = − log ⁡ ( 1 − ∇ h ) , h D = 2 arsinh ⁡ ( 1 2 δ h ) {\displaystyle hD=-\log(1-\nabla _{h}),\quad hD=2\operatorname {arsinh} ({\tfrac {1}{2}}\delta _{h})} となる。 微分法則（英語版）と対応して、 定数律: c が定数ならば Δ c = 0 {\displaystyle \Delta c=0} が成り立つ。 線型性: 定数 a, b に対して Δ ( a f + b g ) = a Δ f + b Δ g {\displaystyle \Delta (af+bg)=a\Delta f+b\Delta g} が成り立つ。 この二つの法則は他の差分作用素でも成り立つ。 積の差分: Δ ( f g ) = f Δ g + g Δ f + Δ f Δ g , {\displaystyle \Delta (fg)=f\Delta g+g\Delta f+\Delta f\,\Delta g,} ∇ ( f g ) = f ∇ g + g ∇ f − ∇ f ∇ g . {\displaystyle \nabla (fg)=f\nabla g+g\nabla f-\nabla f\,\nabla g.} 商の差分: ∇ ( f g ) = 1 g det ( ∇ f ∇ g f g ) ( det ( g ∇ g 1 1 ) ) − 1 {\displaystyle \nabla \left({\frac {f}{g}}\right)={\frac {1}{g}}\det {\begin{pmatrix}\nabla f&\nabla g\\f&g\end{pmatrix}}\left(\det {\begin{pmatrix}g&\nabla g\\1&1\end{pmatrix}}\right)^{-1}} あるいは ∇ ( f g ) = g ∇ f − f ∇ g g ⋅ ( g − ∇ g ) , {\displaystyle \nabla \left({\frac {f}{g}}\right)={\frac {g\,\nabla f-f\,\nabla g}{g\cdot (g-\nabla g)}},} Δ ( f g ) = g Δ f − f Δ g g ⋅ ( g + Δ g ) . {\displaystyle \Delta \left({\frac {f}{g}}\right)={\frac {g\,\Delta f-f\,\Delta g}{g\cdot (g+\Delta g)}}.} 和分: ∑ n = a b Δ f ( n ) = f ( b + 1 ) − f ( a ) , {\displaystyle \sum _{n=a}^{b}\Delta f(n)=f(b+1)-f(a),} ∑ n = a b ∇ f ( n ) = f ( b ) − f ( a − 1 ) . {\displaystyle \sum _{n=a}^{b}\nabla f(n)=f(b)-f(a-1).} See Refs 一般化された有限差分は μ = (μ0, …, μN) を係数列として Δ h μ [ f ] ( x ) = ∑ k = 0 N μ k f ( x + k h ) {\displaystyle \Delta _{h}^{\mu }[f](x)=\sum _{k=0}^{N}\mu _{k}f(x+kh)} と定義されるのが普通である。さらに右辺の和を無限級数に取り換えた一般化として無限差分 (infinite difference) が定義される。別な一般化としては、係数 μk が x に依存することを許して μk = μk(x) とすることで、重み付き有限差分 (weighted finite difference) が考えられる。あるいはまた、歩み h が x に依存する (h = h(x)) とすることも考えられる。そのような一般化は別種の連続度（英語版）を構成するのに有用である。 一般化有限差分の全体は多項式環 R[Th] と見ることができる。ここから差分環が考えられる。 差分作用素は半順序集合上のメビウス反転作用素に一般化される。 畳み込み表現: 接合環の方法論を通じて差分作用素やほかのメビウス反転作用素はメビウス函数と呼ばれる半順序集合上の函数 μ との畳み込みとして表される。差分作用素に対するメビウス函数 μ は数列 (1, −1, 0, 0, 0, …) である。 多変数の場合にも有限差分は考えることができる。それらは多変数の偏微分に対応するものである。 中心差分による偏微分近似をいくつか挙げれば f x ( x , y ) ≈ f ( x + h , y ) − f ( x − h , y ) 2 h , {\displaystyle f_{x}(x,y)\approx {\frac {f(x+h,y)-f(x-h,y)}{2h}},} f y ( x , y ) ≈ f ( x , y + k ) − f ( x , y − k ) 2 k , {\displaystyle f_{y}(x,y)\approx {\frac {f(x,y+k)-f(x,y-k)}{2k}},} f x x ( x , y ) ≈ f ( x + h , y ) − 2 f ( x , y ) + f ( x − h , y ) h 2 , {\displaystyle f_{xx}(x,y)\approx {\frac {f(x+h,y)-2f(x,y)+f(x-h,y)}{h^{2}}},} f y y ( x , y ) ≈ f ( x , y + k ) − 2 f ( x , y ) + f ( x , y − k ) k 2 , {\displaystyle f_{yy}(x,y)\approx {\frac {f(x,y+k)-2f(x,y)+f(x,y-k)}{k^{2}}},} f x y ( x , y ) ≈ f ( x + h , y + k ) − f ( x + h , y − k ) − f ( x − h , y + k ) + f ( x − h , y − k ) 4 h k . {\displaystyle f_{xy}(x,y)\approx {\frac {f(x+h,y+k)-f(x+h,y-k)-f(x-h,y+k)+f(x-h,y-k)}{4hk}}.} のようになる。 陰計算 カールソンの定理（英語版） 風上差分スキーム（英語版）（上流法） ギルブレス予想（英語版） 弧弾力性（英語版） 五点ステンシル（英語版） 差商 シェファー列 時間尺度微分積分学 数値微分法（英語版） 中心差分スキーム（英語版）（中心差分法） テイラー級数 ニュートン級数の一覧（英語版） ニュートン補間 ネールント–ライス積分 部分和分 有限差分係数（英語版） 有限差分法 ラグランジュ補間 連続度（英語版）