物理を解説 ♪
ツイッター用のシェアボタン フェイスブック用のシェアボタン はてなブックマーク用のシェアボタン ライン用のシェアボタン
ツイッター用のシェアボタン フェイスブック用のシェアボタン はてなブックマーク用のシェアボタン ライン用のシェアボタン

テイラー展開

出だしから間違ってると言われそうな説明だが細かいことは気にすんな。
作成:2011/8/24


テイラー展開とは何か

テイラー展開は便利だし,良く使われるテクニックである.その意味も計算方法もとても簡単だ.細かな注意点は後にして,まず式から書いてしまおう.
f(x) = f(x0) + f(x0)(xx0)(1)+ 12!f(x0)(xx0)2 + 13!f(x0)(xx0)3 + 
ちょっと複雑に見えるかも知れないが,説明を加えればすぐに意味をつかんでもらえるだろう.

自分はある点x0における関数f(x)の振舞いについては良く知っているとする.この式の右辺にはf(x0)やらf(x0)やらf(x0)やらが出ているだろう.これらは全てx0での値である.つまりx0におけるこの関数の値,この関数のグラフの傾きの値,2 階微分の値,3 階微分の値・・・,そういった情報はみんな持っているのだとする.

それらの「溢れんばかりの情報」を使って,x0からわずかに離れたx地点での関数の値f(x)を言い当てることができるか,というのが与えられたテーマである.さあ,このような「直接的ではない情報」をどう活用したらいいのかなんと,(1) 式の右辺のように計算すれば,それができるというのである.

xx0との間のわずかな距離はxx0と表せるが,これは (1) 式の右辺に(xx0)(xx0)2(xx0)3という形で何度も出てきている.そうやって落ち着いて考えれば,実に単純な式だと言えるだろう.1 の階乗は 1 だし,0 の階乗も 1 だということを思い出せば,右辺の全ての項が全く同じパターンでできていることが分かる.これでもう式の形については忘れることはない.よな

このような具合にして,関数f(x)を多数の項の和に展開して表すことができる.これを「x0のまわりでのテイラー展開」と呼ぶ.

もしx0として 0 を選んだならば,この式はずっと簡単になるだろう.
f(x) = f(0) + f(0)x + 12!f(0)x2 + 13!f(0)x3 + 
このような「原点のまわりでのテイラー展開」のことを「マクローリン展開」と呼ぶことがある.


近似でよく利用される形

(1) 式に繰り返し出てくる(xx0)の部分はx0からの微妙なずれ具合を表している.そのずれ具合をhという記号で表してみよう.h=xx0と置いて式を書き換えてしまうのである.x=x0+hとも書けるから,左辺も書き換わって次のようになる.
f(x0+h) = f(x0) + f(x0)h+ 12!f(x0)h2 + 13!f(x0)h3 + 
(1) 式よりもシンプルになったし,この方が意味が分かりやすいと感じる人も多いのではないだろうか.



なぜ成り立つのか

(1) 式をどのようにして思いつくことができるのかという説明は面倒だが,(1) 式がなぜ成り立つのかを説明するのは簡単である.(1) 式の両辺を微分してみてほしい.右辺にあるf(x0)f(x0)f(x0)などには定数x0が代入されているので,もはやxの関数ではない.これらは定数だとみなして構わないのだから計算は楽なものである.
(2)f(x) = f(x0) + f(x0)(xx0) + 12!f(x0)(xx0)2 + 
ははぁ.全体が一段下がってきただけで (1) 式とまったく似た形になっているではないか.この両辺にあるxx0を代入すれば,(xx0)(xx0)2やそういったものは全て消えてしまってf(x0)=f(x0)という式に落ち着く.つまり矛盾はないということだ.これが確認できたら,次は (2) 式に対して同じことを繰り返してみよう.両辺を微分するのである.
(3)f(x) = f(x0) + f(x0)(xx0) + 12!f(x0)(xx0)2 + 
何度やっても同じ形だ.(3) 式の両辺にx0を代入したときにもやはり矛盾が起こらない.そうなるようにできているのである.


どれくらい離れてもいいのか

先ほどから「(1) 式はx0からごくわずかに離れた点xにおいて成り立つ」というニュアンスで説明してきた.しかしx0xとの距離が本当にごくわずかならば,こんな無限に続く級数を考えなくても次のような関係が成り立っているはずだ.
f(x)  f(x0) + f(x0)(xx0)
関数のグラフというのは曲線かも知れないが,x0の周りを拡大していくとほとんど直線だとみなせるようになってくる.だから関数の傾きf(x0)と 2 点間の距離(xx0)の積を考えれば,関数がどれだけ変化するかが十分に予測できるというのである.これは微分の基本的な考え方だった.

ところが 2 点間の距離が大きくなってくるにつれてグラフの線が単なる直線とはみなせなくて微妙な差が出てくる.(1) 式の 3 項目以降はそのずれを補正するためのものだ.

だとすればxx0を離れるほどにどんどん項の数を増やしてやることにすれば,ずれがどんどん補正されて正確な値に近付くわけで,実際のところはxx0の近くの値だと限らなくてもいいのではないだろうか.

いや,そう甘くはないのだ.項を増やすほどに正確になるのは,x0からある程度の距離にあるところまでであり,xの値がその距離を超えると途端にずれが拡大して,抑えこむことが出来なくなるのである.そうなると,項を増やすほどにかえって有害になるわけだ.その距離のことを「収束半径」と呼ぶ.

(1) 式の右辺は,収束半径の内側では正しい値に収束し,外側では発散してしまうのである.ちょうど収束半径ピッタリの場所では収束する場合もあれば発散する場合もあって,特に決まりがない.

収束半径が幾つになるかはどんな関数をどこの周りに展開するかによって異なっている.その求め方は後で説明しよう.関数によっては収束半径が無限大になるものもある.その場合にはx0からどれだけ離れても問題なく使えるということだ.



剰余項

(1) 式の右辺は発散することがあるだってつまり (1) 式は必ずしも正しい式だとは言えないことになるではないか・・・そうだ.・・・.騙して申し訳ない.

数学の教科書では正確さを重んじるのでもう少し気を使った書き方になっているはずだ.有限の項までで止めておいて,最後に「剰余項」と呼ばれる項を付けておくのである.
f(x) = f(x0) + f(x0)(xx0) + 12!f(x0)(xx0)2 +  (4)+ 1(n1)!f(n1)(x0)(xx0)n1 + 1n!f(n)(c)(xx0)n
ややこしく見えるだけで,形式は先ほどと変わらず,最後まで同じパターンである.ただ,最後の項のn階微分f(n)(c)だけは,変数部分がx0ではなくcが代入してある.それだけが違う.このcx0xの間にあるどこか,という意味である.そのどこかに,必ずこの等式を正確に満たすcがあるはずだという「テイラーの定理」としてまずこの式が登場するのである.それが正統な教科書の説明のやり方だ.

もし (4) 式の右辺を 2 つの項だけで止めておけば,
f(x) = f(x0) + f(c)(xx0)
であり,高校で習う「平均値の定理」と変わらない内容である.テイラーの定理はその拡張版というわけだ.

剰余項は「左辺にある関数f(x)の値」と「右辺にあるn1次の項までの和」との「誤差」を表していることになる.だからどれくらい正確な近似ができているかを見積もるために剰余項を利用することがある.cの値は具体的に分からないことが多いが,それでもcが動ける範囲内で剰余項が最大になる値というのは具体的に計算してみれば見えてくるものなので,仕方なくその値を使ってやることにすれば,誤差はそれ以下だろうという推論ができるわけだ.

またnとしたときの剰余項の大きさが限りなく 0 に近付くようなら,項を増やすことによって誤差が減っていくことを意味している.このようにして (1) 式の右辺がちゃんと収束するかどうかの判断材料としても使えるのである.


細かな注意点

以上で,テイラー展開についての基本的なことは話し終わった.収束半径の求め方についてだけはまだ話していないが,それは次回に回すことにする.テイラー展開に限らない話として一から話した方が効率が良いように思えるからである.

この他にも色々と知っておいた方がいいこともあるのだが,勘が良ければ自分でも気付けるようなことだし,たとえ自力で気付けなくても,他の教科書を読んだりするうちにいずれは気付くことになるだろう.だいたいこんなものだと思って,自信を持って使ってもらって大丈夫だ.

,気になるってうーん,そうだなぁ.今回の話に出てきたf(x)は無限回の微分が出来る関数でないと当てはめることができないだとか,そういう,割りと当たり前の話だ.微分を何度か繰り返すうちに 0 になってしまう関数については問題ない.その後の微分がずっと 0 になるだけで,微分可能であることには変わりないからだ.微分を繰り返すうちに滑らかでない関数になったり不連続な関数になったりするのが困るのである.

まぁ,省いているのはそういう細かい話である.数学ではあらゆるひねくれた可能性を排除して論理を完璧にする必要があるので,表現には実に細かい配慮が施されている.その一見面倒なだけに思える表現の裏に隠された存在理由に気付くことができたとき,その用意周到さには本当に感心するのである.
数学の教科書が本当は裏で何と戦っているのかという秘密が少しだけ見えた,って感じでカッコイイ
他にもテイラー展開ができないようなひねくれた例はあるのだが,そういうものを見つけ出すのは数学が趣味の人に任せておけばいいだろう.

以下では雰囲気の紹介程度に具体的な使用例を並べておくことにしよう.



具体例 1

指数関数や三角関数を 0 の周りで展開すると次のようになる.
ex = 1 + x + x22 + x33!+sinx = x x33! + x55! + cosx = 1 x22! + x44! + 
これらの関数が単純な和で表現できてしまうのはなかなか面白いだろう.これらの収束半径は無限大である.つまりxの値にかかわらず,常に成り立つ関係である.


具体例 2

指数関数が上のように表せるのなら,その逆関数である対数関数についてもどうなるのか試してみたくなる.しかしlogxに 0 を代入することはできないし,logxを微分した1/xにも 0 を代入するわけにはいかないので,0 の周りにテイラー展開することは出来そうにない.

かと言って,原点以外で展開したようなごちゃごちゃしたものは,それほど見てみたいという気も起きないだろう.そこで原点を少しずらしてやるという工夫をするのである.次のような関数ならば 0 の周りに展開ができそうだ.
f(x) = log(1+x)
実際,やってみると次のようになる.自分で試してみた方がこうなる理由が分かって面白いと思うけれど.
(5)log(1+x) = x  12x2 + 13x3  14x4 + 15x5  
計算の仕方は次回にするが,この展開の収束半径は 1 である.つまりこの展開は1<x<1の範囲でしか成り立っていない.いや,収束半径ちょうどのところ,x=1x=1で収束するかどうかは個別に検証してみないと何とも言えないのだった.

そこで,(5) 式の右辺に 1 を代入してやると,
1  12 + 13  14 + 15  
となり,正の項と負の項が交互に現れる級数「交項級数」となる.交項級数は各項の絶対値が単調減少で 0 に収束するなら収束することが言えるのである.こういうことも次回説明しよう.

また (5) 式の右辺に -1 を代入してやると,
 1  12  13  14  15  
となる.これは「調和級数」と呼ばれるものの全体にマイナスがかかっている形である.音楽理論との絡みでそのような名前が付けられたという歴史がある.調和級数の各項は単調減少で 0 に収束するにも関わらず,無限大に発散することが知られている.無限に小さくなるものの和が一定値にとどまらないで発散するだって直観に反するような結果なので,そのことが初めて示された時にはかなりの驚きがあったらしい.今ではそのことを簡単に証明する方法が分かっている.
1 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + > 1 + 12 + 14 + 14 + 18 + 18 + 18 + 18 + 116 + = 1 + 12 + (14+14) + (18+18+18+18) + (116+) + = 1 + 12 + 12 + 12 +  
元よりも小さくしたものでさえ発散するのだから,元の級数は当然発散するという理屈だ.

とにかく (5) 式の収束半径は 1 で,x=1では収束,x=1では発散するのである.



具体例 3

tanxの逆関数をテイラー展開すると面白いことになる.とは言うものの,今回説明したテイラー展開の定義をそのまま使って計算しようとすると,微分するごとに式が複雑になり過ぎてどうしようもなくなるのである.これを避けるために裏技を使う必要がある.テイラー展開と言いつつも,いつも正直に定義通りに計算するとは限らないという例だ.

tan1xを一回微分すると次のようになる.高校数学の範囲なので詳しくは省略しよう.
(6)(tan1x) = 11+x2
ここから続けて二度三度と微分をしていくと項がどんどん増えて行って手に負えなくなってくる.だから今回説明したような方法でのテイラー展開は難しい.しかし,(6) 式の結果を利用して,tan1xを次のように定義してやることができる.
(7)tan1x = 0x11+t2dt
ところで,初項がa,公比がrの等比数列の和は,
a + ar + ar2 +  = {a1r( |r|<1 )( |r|1 )
であった.ここでr=t2,a=1とすれば,(6) 式の積分の内部と同じ形にできるだろう.(7) 式は次のように書けるはずだ.
tan1x = 0x(1t2+t4t6+)dt
公比rの絶対値が 1 未満でなくてはならなかったので,それを引きずっている以上はxの範囲も|x|<1でなければならないだろう.この積分を実行すれば,次のようになる.
(8)tan1x = x  13x3 + 15x5  17x7 + 
これはテイラー展開したのと同じことだ.めでたしめでたし.

方法は次回説明するが,これの収束半径を調べてやるとちゃんと 1 になっている.先ほどxの範囲は|x|<1でなければならないと説明したことと一致している.ところが (8) 式の右辺はx=1を代入しても収束するらしいのだ.先ほどの例に出てきたのと同じ交項級数になるし,各項はどんどん 0 に近付くからだ.

というわけで,(8) 式については両辺に 1 を代入しても成り立っているということになるだろう.ちなみに左辺に 1 を代入するとπ/4である.右辺にも 1 を入れてやると,次のようになる.
π4 = 1  13 + 15  17 + 
むむっ,つまりπの値は次のような単純な和の極限として計算できるわけだ.
π = 4  43 + 45  47 + 
これも驚きではなかろうか私が中学のとき,テイラー展開なんて知らなかったけれども,なぜかこの式だけをどこかで知ったのだった.慌ててパソコンに計算させて,値が徐々に円周率に近づいてゆくことに感動した日のことを今でも良く覚えている.


具体例 4

ここまでの例とは違って,何度か微分したら 0 になってしまうような関数をテイラー展開してみたらどうなるのだろうか.,テキトーに思い付いた次のような関数を展開してみよう.
f(x) = x2  4x  3
これは 3 回目の微分より後は何度微分しても 0 になるので結果の項の数は有限である.無限の項がなければ発散などはしないので収束半径などを気にする必要はないだろう.これをx=0の周りでテイラー展開してみるとこうなる.
f(x) = 34x+x2
項の順序が変わっただけで元と全く同じものである.まぁ,当然といえば当然だ.項が加わるごとに正確になってゆくという見方もできるだろう.

では同じ式をx=1の周りでテイラー展開してみたらどうだろうか.まぁ,こんな具合である.
f(x) = (143)+(24)(x1)+22!(x1)2= (x1)2  2(x1)  6
こういう式変形ならわざわざテイラー展開を使わなくてもできるのだが,テイラー展開を使っても出来ることなのだと知っておくと,いずれ役に立つときが来る.この形の式を見たときに,テイラー展開と同じ思想が表現されている式だな,と気付けることが大切である.


具体例 5

では最後に実際的な例を一つやっておこう.相対論では物体のエネルギーEと運動量pの関係が次のようになっていることが示される.mは物体の質量,cは光速を表わしている.
E2 = (mc2)2 + p2c2
エネルギーが運動量の関数になっていると見るならば,次のように書いたほうが雰囲気が出る.
E(p) = (mc2)2 + p2c2
関数らしくはなったけれども複雑に見える.この式は物体が光速に近い時にも成り立っているのだが,物体が極めて遅い場合,つまりpが 0 に近い場合にはテイラー展開で表すことができそうだ.きっとその方が単純になるだろう.

ところで式の中にある運動量pがベクトルで表されているのでどう扱ったものかと悩むかも知れない.まぁ,ここではp2というのは|p|2の意味であるし,|p|をただのpという記号で書いておくことにすれば普通の関数に見えるだろう.
(9)E(p) = (mc2)2 + p2c2
次のように展開できるはずである.ちょっとだけ時間が掛かるが,技術的に難しいところはないだろう.
(10)E(p) = mc2 + p22m  p48m3c2 + 
真面目にやってみた人は計算量の多さの割に単純すぎる結果しか残らず,がっくり来たかもしれない.

実はあらかじめ次のようなテイラー展開を公式として知っていると,こういう無駄な苦労をしなくて済んだのである.
(1+x)a = 1 + ax + a(a1)2x2+ a(a1)(a2)3!x3 +  + a!(an)! n!xn + 
この式はよく使う.覚えておいて損はない.覚えるのが苦手なら最初の 2 項だけでも十分だ.この式をテイラー展開を使って自力で導くのは簡単だろう.この右辺の冪級数の収束半径は 1 である.先ほどから収束半径が 1 になる例ばかりになってしまっているのが少々不満だ.x=1x=1で収束するかどうかは,aの値によって様々に変わってくるのだが,細かいことなので省略しよう.次回の話を読んでそういうことを自分で判断できるようになれることを期待する.

この公式をどう利用すれば良いのか分かるように,もう一度 (9) 式を変形してみよう.
E(p) = (mc2)2 + p2c2= mc21+p2c2(mc2)2= mc2(1+p2m2c2)12     (← ここに公式をあてはめる)= mc2(1 + 12p2m2c2 + 1212(121)(p2m2c2)2 + )= mc2 + p22m  p48m3c2 + 
ほーら,さっきと同じ結果だ.楽なものだ.公式を当てはめるときにxの代わりにp2/m2c2を入れているので,
p2m2c2 << 1
という条件が満たされていないと良い近似にはならないことがうかがえる.これはつまりp<<mcってことであり,運動量の定義がp=mvだということを考えればv<<c.すなわち,物体の速度が光速よりずっと小さい時に成り立つ近似だということで,首尾一貫している.

ああ,なるほど・・・,(10) 式のpの収束半径はmcだったというわけだな.収束半径が 1 以外になる例だって,ほら,この通り.ちゃんと幾らでもある.

さあ,これくらいで終わりにしておこう.学生の頃,あちこちでちょこまかと聞いて,長いこと頭の中で一つに繋がらなかった話をこうして一つにまとめて書くことができて満足である.


趣味の物理学書店

趣味で量子力学2の広告バナー