« Re: DOSで秒数を表示する | トップページ | 効率的なマークアップ その 2 »

2006年9月 5日 (火)

#Calc 1.1.4 その 7

今日は正接関数を実装。

計算方法は単純で、正弦を余弦で割るだけ。正接を求める方法は他にもあるが、この方法は簡単だし、指数関数と同じ程度に速い。(もともと正弦も余弦も指数関数のほぼ半分の時間で計算できるので)

次は逆三角関数に取り掛かりたいのだが、どうやって計算するか考え中。一応、いくつか候補はあるのだがどれも遅そう。

  • 正弦のマクローリン展開: sin-1(x) = x1/1 + (1 / 2) x3/3 + (1·3 / 2·4) x5/5 + (1·3·5 / 2·4·6) x7/7 + …
  • それを正接用にアレンジしたもの: tan-1(x) = (y1 + (2 / 3) y2 + (2·4 / 3·5) y3 + (2·4·6 / 3·5·7) y4 + …) / x、ただし y = x2 / (1 + x2)
  • 正接を算術幾何平均風に:
    • a0 = 1 / √(1 + x2)
    • b0 = 1
    • an+1 = (an + bn) / 2
    • bn+1 = √(an+1 bn)
    • tan-1(x) = x a0 / a

|

« Re: DOSで秒数を表示する | トップページ | 効率的なマークアップ その 2 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/169172/11775881

この記事へのトラックバック一覧です: #Calc 1.1.4 その 7:

» http://magicant.txt-nifty.com/main/2006/09/cal_f8af.html [まじかんと雑記]
Q's Calc の逆正接 (アークタンジェント) 計算アルゴリズム [続きを読む]

受信: 2006年9月 7日 (木) 14時03分

» #Calc 1.1.4 その 8 [まじかんと雑記]
結局、逆正接の計算はJavaによるアルゴリズム事典の AtanT のアルゴリズム [続きを読む]

受信: 2006年9月 8日 (金) 19時10分

« Re: DOSで秒数を表示する | トップページ | 効率的なマークアップ その 2 »