テイラー展開を直感的に導出してみる

テイラー展開の根拠となるテイラーの定理の証明は、平均値の定理とロルの定理を使ったやり方が有名です。式を追えば、なるほどと思えるかもしれないですが、もっと直感的に理解したいと思ったことはないでしょうか。私はテイラー展開を初めて見たときからそんなモヤモヤを抱えていました。

コンテンツの転載は固くお断りいたします。

簡単にテイラー展開の紹介から

テイラー展開は、コンピューターを使わないと数値を計算するのが難しいような複雑な関数を、近似により別の簡単な式で表現することで、おおよその数値を計算することに使われたりします。中には、オイラーの公式を導いたりと、関数そのものの性質を知ることに使われたりもします。

数学的に厳密なことを言うと、テイラー展開は無限回微分可能な関数にだけ使えると言う当たり前といえば当たり前の制約があったり、数式できちんと書こうとすると、最後の剰余項を含めておかないといけないだとか、収束半径だとか面倒くさいこともありますが、ここではそういったことは取り敢えずおいておきます。

関数 f(x) を x=x0 周りでテイラー展開すると

\( f(x) = f( x_{0})+f'( x_{0})(x-x_{0})+\frac{f''( x_{0})}{2!} (x-x_{0})^{2}+\frac{f^{(3)}( x_{0})}{3!} (x-x_{0})^{3}+\cdots \)

となります。スマホで見ていて式がうまく見れないときは、式をスクロールして下さい。

図的に理解したい

関数 f(x) を考えたとして、点 x=x0 における関数 f(x) についての情報だけを使って、距離 a だけ離れた点での関数 f(x) のだいたいの値を知ろうというのがテイラー展開でした。

つまり、 x=x0 における関数 f(x) の値 f(x0) や、1次の微分係数 f’(x0) 、2次の微分係数 f”(x0) 、3次の微分係数・・・・・を使って a だけ離れたところでの値 f(x0+a) を表現するということです。

ここでは、導関数によって関数がどう変化していくかを考えることでテイラー展開を導いてみようと思います。

x=x0 からx=x0+a の間で関数 f(x) がその導関数によってどのように変化するかを考えるので、この幅を n 等分し、分割された区間内で関数がどう変化していくかを考えます。n 等分した区間の幅は a/n になります。この区間1つ分の中では関数の値は変化せず一定とみなせるくらい十分大きく n を取ります。

1次近似

いま、2次以降の導関数は無視し1次導関数のみ考慮することにしてみましょう。関数 f(x) の増分に寄与するのは1次導関数のみとなります。2次以降の導関数を無視するということは1次導関数は変化せずに一定なので、各区間での関数 f(x) の増分は

\( f'( x_{0})\frac{a}{n} \)

に等しくなります。区間はn個あるので、f(x0+a) は

\( f(x_{0}+a) = f(x_{0}) + f'( x_{0})\frac{a}{n}\times n = f(x_{0}) + f'( x_{0})a \)

と表されます。f(x0) との差分が、x0での傾きに幅 a をかけたもので近似されています。これを1次近似と呼びます。

でも、これだと2次以降の導関数が値を持つ(0で一定ではない)関数では当然ズレが出てしまいます。

2次近似

今度は3次以降の導関数を無視して考えてみましょう。2次導関数がどう関係してくるかがポイントです。

1つ目の区間

n 等分された1つ目の区間での関数 f(x) の増分は

\( \Delta f_{[x_{0}, x_{0} + \frac{a}{n}]}=f'( x_{0})\frac{a}{n}+f''( x_{0})(\frac{a}{n})^{2} \)

となります。なんでこうなるかは下の方で説明します。

2つ目の区間

続いて2つ目の区間では、まず2次導関数は変化せず一定ですので(3次以降の導関数は無視)、2つ目の区間における2次導関数による関数 f(x) の増分(緑色部分)は

\( f''( x_{0})(\frac{a}{n})^{2}\cdots\cdots① \)

に等しいです。

1次導関数による増分はと言うと、1次導関数自身が2次導関数によって増える分を考慮する必要があるので、1次導関数は前の区間よりも

\( \Delta f'_{[x_{0} + \frac{a}{n}, x_{0} + 2\frac{a}{n}]}=f''( x_{0})\frac{a}{n} \)

だけ増えることになります。2つ目の区間における1次導関数の値はというと

\( f'( x_{0}+\frac{a}{n})=f'( x_{0})+f''( x_{0})\frac{a}{n} \)

となります。よって2つ目の区間における1次導関数による関数 f(x) の増分(水色部分)は

\( f'( x_{0})\frac{a}{n}+f''( x_{0})(\frac{a}{n})^{2}\cdots\cdots② \)

となります。式中に2次の微分係数が入っていますが、これはあくまでこの区間での1次導関数による増分ということに注意してください。1つ目の区間では2次導関数からの寄与も合わせて、これと同じ分だけ関数 f(x) は増えていました。

結局、2つ目の区間における関数 f(x) の増分は、①と②を合わせて

\( \Delta f_{[x_{0} + \frac{a}{n}, x_{0} + 2\frac{a}{n}]}=f'( x_{0})\frac{a}{n}+2f''( x_{0})(\frac{a}{n})^{2} \)

となります。

3つ目の区間も同様に考えると図のようになります。これを n 等分した全ての区間にわたって足し合わせて考えたものが2次近似です。

下の図を見ると各区間の右端がグラフからどんどんずれていっています。下にある3次近似の場合の方がズレは小さくなります。

3次近似

考え方は2次近似のときと同じです。各区間での導関数の増分は、1つ前の区間における、自身よりも次数が進んだ導関数の増分を全て加えたものが現在の区間での値になるということです。

図的に言うと、一つ前の区間で自身よりも上に積み重なっていたものを全て加えたものが現在の区間での増分になるということです。

なんでそんな積み重ね方するのって思った方のために、下で式を使って一般化して説明してみました。

一般化して考えてみる

考え方の基本は、一言で言うとk次導関数(元の関数はk=0の場合として考えてください)は、(k+1)次導関数に区間幅 a/n をかけたものがその区間での増分となって増えていくということです(積分の大原則)。例えば今、m 番目の区間を考えているとして (m ≧ 1)、下の添字にそれを表すことにすると

\( \Delta f^{(k)}_{m}=f^{(k+1)}_{m}\frac{a}{n} \)

と表せます。つまりm番目の区間のk次導関数の値は、(m-1) 番目の区間の値を使って

\( f^{(k)}_{m}=f^{(k)}_{m-1}+f^{(k+1)}_{m}\frac{a}{n} \)

と表すことができます。複雑な式だけを眺めていると何をしようとしているのか見失ってしまいそうですが、やろうとしているのは、1つ手前の区間における情報だけで表すということです。

上の式を見るとお気づきだと思いますが、この式を繰り返し用いることで、式の右辺を(m-1)番目の区間のものだけで表現できるはずですよね。一つずつ導関数の次数上げていきつつ(m-1)番目の区間のものに置き換えていくイメージです。

\( f^{(k)}_{m}=f^{(k)}_{m-1}+f^{(k+1)}_{m}\frac{a}{n}=f^{(k)}_{m-1}+(f^{(k+1)}_{m-1}+f^{(k+2)}_{m}\frac{a}{n})\frac{a}{n}=\cdots\cdots \)
     \(=f^{(k)}_{m-1}+f^{(k+1)}_{m-1}\frac{a}{n}+f^{(k+2)}_{m-1}(\frac{a}{n})^2+f^{(k+3)}_{m-1}(\frac{a}{n})^3+\cdots\cdots+f^{(k+s)}_{m-1}(\frac{a}{n})^s+f^{(k+s+1)}_{m}(\frac{a}{n})^{( s+1)}\)

実は、完全に(m-1)番目のものだけで表せるわけではなく、最後の項にm番目のものが残ってしまうのですが、繰り上げ回数sを十分大きく取れば区間幅の累乗のおかげで無視できます。近似の精度を上げたければ、このsを好きなだけ大きく取ればよいのです。

この式が、まさに上の図で説明していたことを表していて、導関数の値が、区間を移ると上に積まれていたブロック分を全て足したものになるということを言っています。一番この記事で言いたいことがこれです。式中の項1つが、図で言う1つの色で塗られた範囲に相当します。

m=1として考えると、(m-1)番目の区間が0番目の区間というここでは定義していない区間が出てきてしまいますが、ここはx=x0における導関数の値を使うと考えてください。上の式と同じ形で1番目の区間での値が表現できます。

これで、なんで上に積み重なっているものを全部足して次の区間のものができるのかと、x=x0での情報だけでm番目の区間での関数の値を近似できることを分かってもらえたかと思います((m-1)番目のもので表現できたら、次は同様に(m-2)番目のものだけで表すのということを繰り返せば、最終的に0番目の区間、つまりx=x0での値だけで表現できる)。

結局どうやって f(x₀+a) を表すのか

色分けしたブロックを積み重ねていくことで次の区間が表せることは分かったので、次はn個の区間全体でそれがいくつあるのかを求めます。もう一度3次近似のケースを考えて、3次導関数のブロックが区間[x0, x0+a]全体でいくつになるのかを計算します。

1つ目の区間で1個、2つ目の区間で3個、3つ目の区間で6個あります。証明はしないですが、規則性を考えると4つ目の区間では10個になりそうです。規則性は分かりましたか?

区間を1つ移って増える個数が1ずつ増えています。各区間での3次導関数のブロックの個数は、1からその区間の数字までの整数の和になっています。よく知られている和の計算ですね。m 番目の区間にある紫色のブロックの個数は

\( 1+2+3+\cdots+m=\sum_1^m k=\frac{1}{2}m(m+1) \)

m 番目の区間での個数が分かったので、全区間で足し合わせてやれば知りたい3次導関数のブロックの個数がわかります。これもよく知られている計算だと思うので結果だけ載せておきます。二乗の和をどうするかがポイントですね。

\( \sum_1^n \frac{1}{2}m(m+1)=\frac{1}{6}n(n+1)(2n+1)\cdots③ \)

3次導関数のブロックの高さ(x=x0における関数 f(x) の3次導関数による増分)は

\( f^{(3)}( x_{0})(\frac{a}{n})^{3}\cdots④ \)

です。③と④をかけることで区間[x0, x0+a]にわたっての関数 f(x) の増分に3次導関数が寄与する量が求まります。n は十分大きくとっていいので、無限大にして考えると

\( \lim_{n \rightarrow \infty }f^{(3)}( x_{0})(\frac{a}{n})^{3}\times\frac{1}{6}n(n+1)(2n+1)=\lim_{n \rightarrow \infty }\frac{f^{(3)}( x_{0})}{6}a^{3}\frac{n(n+1)(2n+1)}{n^{3}}=\frac{f^{(3)}( x_{0})}{3!}a^{3} \)

テイラー展開の3次の項と一致しました。本来なら一般にk次導関数についても同様に示さないといけないのですが、途方も無い計算量が予想されるのと、そもそもΣの和の計算がうまく進められるのか見当が立ちません。なので、ここで紹介した考え方で求めたk次導関数の寄与する量が、テイラー展開におけるk次の項と一致するというのは予想ということに留めておきます。