Taylor展開について

ちょっと前に書いてお蔵入りコースだった文章。眠いときに書いた文章だったと思います。シューティング製作スレで少しテーブルの話になってたので思い出して発掘してみた。

http://pc5.2ch.net/test/read.cgi/gamedev/1092048824/203-

私は Taylor展開がとても好きです。そのへんの話。基本的な話です。けど大学に行かないと教えてもらえないので困ったもんです。たぶん高校までで教わらない一番プログラムに役に立つ数学じゃないかなあ。二位は Fourier 変換/級数とか最小二乗法とかとして。
三角関数と指数関数についての知識を前提にします。

どこからがいいかな。まあ自然対数の底、 e のはなしから。 e を求める式として、

e=1+1+\frac{1}{2}+\frac{1}{3!}+\frac{1}{4!}+...=\sum_{i=0}^{\infty}\frac{1}{i!}

というものがあります。ちなみに ! は階乗で、 0! は 1 として定義されてます。知らん人は電卓とかでやってみると面白いかも。これは以下の Taylor展開の特殊形です。

f(x)=f(0)+xf'(0)+x^2\frac{f''(0)}{2!}+...=\sum_{i=0}^{\infty}x^i\frac{f^{(i)}(0)}{i!}

f に (i) が乗っているやつは i 階微分をあらわしています。 f(x)=e^x, x=1 を代入してみると最初の式に帰着します。 e^x微分すると同じ関数になるからわかりやすいです。さて、同じ関数になる関数といえば三角関数も sin => cos => -sin => -cos => sin と変化していてわかりやすげです。それぞれ Taylor展開してみます。

\cos(x)=1-x^2\frac{1}{2!}+x^4\frac{1}{4!}-...=\sum_{i=0}^{\infty}(-1)^ix^{2i}\frac{1}{2i!}
\sin(x)=x-x^3\frac{1}{3!}-...=\sum_{i=0}^{\infty}(-1)^ix^{2i+1}\frac{1}{(2i+1)!}

ちょっと省略しましたけどよく見ればわかるかと思います。この式はとても便利です。 x が小さい値であれば (弧度法なのでたいていは小さな値であることに注意)、 x^3 なんかはとても小さな値で、無視できる値になります。そういう場合で、計算速度が重要で精度が割とどうでも良い場合であれば、

\cos(x)=1-\frac{x^2}{2}
\sin(x)=x

などとして、とても計算量を減らすことができたりします。良かったですねえ。それがこのへんのはなし(http://d.hatena.ne.jp/shinichiro_h/comment?date=20040819#c)。 N-way弾は角度が鋭角なので、三次以降の項はそんなに問題にならないんです。 sin/cos テーブル嫌いな私としてはそれなりにオススメ。

もうちょっと話を続けたいらしいです。 sin, cos の Taylor 展開を見ると、たがいちがいになっていることにすぐ気付きます。たがいちがいなものを見ると足したくなるのは人の情です。

\cos(x)+\sin(x)=1+x-x^2\frac{1}{2!}-x^3\frac{1}{3!}+...

これはなんとなく、 e^x の Taylor展開に似ています。後の都合で係数 a を使って e^{ax} を Taylor展開してみます。

e^{ax}=1+ax+{ax}^2\frac{1}{2!}+{ax}^3\frac{1}{3!}+...

さて、見比べてみると、 cos+sin の方は四回周期で ++-- と来ているのがどうしようもなく似ていません。二回かけると符号がひっくり返るものといえば、虚数単位 i があります。おあつらえ向けに e^{ax} は係数 a がくっついているので a=i として計算しなおしてみます。

e^{ix}=1+ix-x^2\frac{1}{2!}-ix^3\frac{1}{3!}+...

今度は二回おきに i が付いてしまいましたが、 \cos(x)+\sin(x) ではなく、 \cos(x)+i*\sin(x) とすれば良いことです。というわけで、

e^{ix}=\cos(x)+i\sin(x)

を得ました。 e^{ix} というのは何のことやらわかりません。こんなこと考えてていじめられたのは Euler だったっけ。何のことやらわかりませんけど存在する数です。負数が実在するのと同様程度に虚数は存在します。さて大数学者 Eulerの贈り物 (ちなみに読んでません) を享受しましょう。上の式にπをつっこむと、

e^{i\pi}=-1

ああゾクゾクするほどすばらしい。

おまけ的に補足…

e^x の方も実のところ二つの関数に分解できます。 e^x=\cosh(x)+\sinh(x) などと書きます。これらは双曲線関数などと呼ばれ、 \cosh^2(x)-\sinh^2(x)=1 などと、三角関数に似てるけどちょっと違う特徴を持っています。三角関数に比べると現実の世界に登場する頻度は低いですけど、鎖の両端を持ってだらーんと真ん中の部分が下がっているような、あれは \cosh(x) に従っています。だから懸垂曲線と言ったりするそうな。

ああ、あと平方根の大雑把な値の計算に使えるとか。まあ開平法でいいんですけど。

\sqrt{59}=8\sqrt{1-\frac{5}{64}}=8(1-\frac{5}{128})=7.6875

実際の値は 7.68114574 。

追記:

またしてもどこかで見た話だなあ、と思ったら ^c さんだった。自分の記憶力が以下略。はいいとしてあまし似てはいないか。チェビシェフ多項式がおいしいらしい。

http://www.radiumsoftware.com/0302.html#030226

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h