求職活動もせず試験勉強も手に付かずに何をしているかといえば・・・。マクローリンさん(後述)に会ってきました。
大学の数学の授業はいやでした。もうね、微積なんて分けわかんないし。線積分だの面積分だけならまだしも、訳のわからない記号などが並んでいましたよ。三角関数の多重項の微積なんてorz。
積分は視点を変えるとforループですよね? 微分てなんでしょ?
この微積(共通教育・教養)の時間や応用数学(工学部の)などで出てくる各種方程式は全くと言っていいほど覚えていません。だって、必要になったら参考書読めば済む話です。
それよりも、数値解析はちょっとお勉強したことを気にかけていたりするわけです。こっちはコストと誤差という切実な問題が絡んでいますから。
さて、本題。
三角関数のcos()ですが、プラットフォームによっては利用できない場合もあります。例えば昔のiアプリとか。その際に三角関数による数値演算が必要になったらどうするか?という問題が出るわけです。
昔、Flashのクリエータさんはレーダーチャートや各種グラフ作るのに当時は三角関数がなかったためにテイラーさん(テイラー展開)使って作ったと話してくれたことを想い出します。
そう、ないならテイラー展開やマクローリン展開を使って作ればいいわけです。当然何処まで項を増やせばよいのか・・・というコトになりますが、必要なだけで良いでしょう。ただ、増えると目に見えて遅くなります。大体8次の項(ocs(x)=1-(1/2!)x^2+(1/4!)x^4-(1/6!)x^6+(1/8!)x^8)当たりだとだいぶ近似するようです。
「自分で展開する以外に他に方法がないか?」と思うのも当然です。精度がある程度で良ければ、あらかじめ変換テーブルを用意して、それを参照すれば(・∀・)イイ!!わけです。小数点以下10桁くらいなら簡単に作れますし。保管容量も或る程度わかりますし。
高校普通科の数学はどのようなことをしていたのかはわかりませんが、cosのマクローリン展開後の表現ならば職業系高校の数学でも理解できますが・・・「なんでこうなるの?」の細かいものはさっぱりですね。私は覚えてないです。ノート取るので精一杯w。社会に出てみると三角関数は使ってもテイラーさんやマクローリンさんに滅多にお目にかかることはありませんでしたね・・・。
さて、実際にリミテッドデバイスなどでの数値演算は比較的コストの高い部類に属します。その際に、変換テーブルを用意するか自分でコストの安い計算処理に置き換えてしまうことが、計算機コストの面で得策だと言うことがあることは覚えていて損無しでしょう。数値演算はコンパイラやライブラリ、FPU等によっても左右されるので実際は環境依存なのでしょう。
そういえば「対数なんて何に使うんだ?」と思ったことがありますが、多倍長計算や多桁計算に使っているのを想い出しました。高校の3年次の課題研究は私はパソコン通信用のホストプログラムについて研究していましたが、友だちはゲームか何かを作っていました。それまで「ゲームなんて」と思っていたら、中身は数式だらけでした(汗)。しかも、「普通に計算したら遅いから対数変換、log使ってさくさくやってるよ」なんて言うものですからね・・・。
[参考リンク]
|