RPGツクールと数学のブログ

RPGツクールと数学についてのブログです。

アークタンジェント近似式

過去ブログの転載です。

ガウス求積を用いたアークタンジェント近似式を紹介します。ガウス求積とは、以下の式で表される積分の近似式です。

 \displaystyle \int_{-1}^{1} f(x)dx \fallingdotseq \sum_{i=1}^{n} A_{i} f(x_{i})

ここで出てくる A_{i}, x_{i}は、ルジャンドル多項式から導かれる定数です。ルジャンドル多項式とは、以下式で表される多項式です。

 \displaystyle P_{n}(x)=\frac{1}{2^{n} n!}\left(\frac{d}{dx}\right)^{n} (x^{2}-1)^{n}

このとき、 P_{n}(x)=0と置いたときの解 xのことを零点 x_{i}といい、それを用いて出てくる次式

 \displaystyle A_{i}=\frac{2}{(1-x_{i}^{2})(P'_{n}(x_{i}))^{2}}

のことを、重み A_{i}といいます。

 P_{i}(x) n多項式で、解 x_{i} n個あります。それぞれの零点 x_{i}に対して A_{i}が求まるので、重みは全部で n個あります。

積分値を求めたい関数に零点を代入したもの」と「その零点に対する重み」との積の総和が、求めたい積分値の近似値になる、というのがガウス求積です。やー難しいっすね。

実際は、この nを何にするかによって常に同じ定数が出てくるので、定数さえ求めてしまえば使いまわしで色んな関数の積分ができるようになります。

例えば n=3のときはP_{3}(x)=\frac{1}{2}(5x^{3}-3x)になり、零点は x=0, \pm \sqrt{\frac{3}{5}}となって、重みはそれぞれ \frac{8}{9},\frac{5}{9},\frac{5}{9}となります。

アークタンジェント近似式

さてこのガウス求積を使ってアークタンジェントの近似式を導出しましょう。 nを増やせば精度が上がりますが、 n=3で十分近似としては高精度です。また、アークタンジェント \frac{1}{1+x^{2}}積分で求まり、3次の零点は x=0, \pm \sqrt{\frac{3}{5}}ですから2乗とルートが消えて簡単な式になるんですよ。

2乗してきれいにルートができるようにするため、ここでは以下の積分を考え、その近似値をガウス求積で求めます。

 \displaystyle \tan^{-1}(a)=\frac{1}{2} \int_{-a}^{a} \frac{1}{1+x^{2}} dx

右辺を x=atと置いて積分範囲を変えると

 \displaystyle \tan^{-1}(a)=\frac{a}{2} \int_{-1}^{1} \frac{1}{1+(at)^{2}} dx

となります。

3次のガウス求積は

 \displaystyle \int_{-1}^{1} f(x) dx \fallingdotseq A_{1}f(x_{1})+A_{2}f(x_{2})+A_{3}f(x_{3})

となり、 x_{1}=0, x_{2}=\sqrt{\frac{3}{5}}, x_{3}=-\sqrt{\frac{3}{5}}で、 A_{1}=\frac{8}{9}, A_{2}=\frac{5}{9}, A_{3}=\frac{5}{9}ですから、

 \displaystyle \frac{a}{2} \int_{-1}^{1} \frac{1}{1+(at)^{2}} dx
 \displaystyle \fallingdotseq \frac{a}{2} \left( \frac{8}{9} \cdot \frac{1}{1+0^{2}}+\frac{5}{9} \cdot \frac{1}{1+\left( a\sqrt{\frac{3}{5}} \right)^{2}}+\frac{5}{9} \cdot \frac{1}{1+\left( -a\sqrt{\frac{3}{5}} \right)^{2}} \right)
 \displaystyle =\frac{a}{9} \left( 4+\frac{5}{1+ \frac{3}{5} a^{2}} \right)
 \displaystyle =\frac{a}{9} \times \frac{20+12a^{2}+25}{5+3a^{2}}
 \displaystyle =\frac{12a^{2}+45}{27a^{2}+45}a

となりますから、

 \displaystyle \tan^{-1}(a)\fallingdotseq \frac{12a^{2}+45}{27a^{2}+45}aラジアン

が得られます。

実際に何か求めてみると、結構精度よく値が求まることが分かります。

例えば a=\frac{1}{2}のとき \tan^{-1}\left(\frac{1}{2}\right)\fallingdotseq 0.46365になりますが、この近似式に代入すると0.46377となります。かなり近いじゃないですか。がんばれば十分手計算で求まる程度の計算量で、精度よくアークタンジェントの値が求められるわけですから、割と使えると思うんです。

 aの値が大きくなればなるほど当然誤差が大きくなっていきますが、 a \gt 1の場合は、 \displaystyle \tan^{-1}(a)=\frac{\pi}{2}-\tan^{1}\left(\frac{1}{a}\right)の関係式を用いれば良いでしょう。

また、この式による近似値はラジアンですが、六十分法に改めた版は以下のようになります。

 \displaystyle \tan^{-1}(a)\fallingdotseq \frac{75a^{2}+285}{3a^{2}+5}a [度]

こっちの式の最大誤差は約0.18°なので、比較的簡単なこの分数式からすれば、まあ良い精度になったのではないでしょうか。

これを使って、ぜひ日常の色々なものの角度を測ってみましょう。