科学と家事とプログラミング (python を中心に)

python 温度計測 湿度計測 DS18B20 USB9097

tanθに従う現象をべき級数で近似するのは、なんだか残念なのです

tan のべき級数展開には気をつけよう

べき級数で近似するのは手軽な方法ですが、対象とする現象が tan に従う場合には、 次数を上げたところで精度の向上は期待できません。

かりに次数を上げることで必要精度を達成できた場合でも、 それは単に tan を再現するために高次の項を必用とするだけかもしれません(tan の収束半径は有限)。 たとえば、θ が 60 deg (1.25 rad) くらいになると、次数を 9 まで増やしても 目に見えるスケールの誤差が残ります。 なにかしらの理想曲線からのズレや歪の表現としてべき級数を選んだのだとしたら、 ちょっと話が違うのではと思う次第です。

f:id:sken20k:20180324175558j:plain

実際の場面で思いつくのは、光学系の歪補正の補正式などでしょうか。 θの範囲はそれほど広くなくても、 要求精度が高くなると上のような状況が発生します。 理想的なピンホールカメラ(平面への投影)は、まさに tan(θ) ですから、 そこからの歪を表現するなら、θの級数ではなく、w = tan(θ) として w のべき級数を採用すると、少ない次数でよく近似できる場合があります。

θのべき級数が使われてしまう理由も、なんとなくは想像はできて、 教科書で扱われる演習問題などでは、θの一次式や二次式で定式化したものが多く、 精度や範囲を限定したものになっている。現場で、要求精度が厳しくなったりθの範囲の広く なっても、根本的に見直すことなく(改良と称して)、θの次数を上げて精度を確保しようとする。 そんなことが起こっている気がします。 ただし、組み込み分野などで tan などの超越関数を気軽に使えるようになったのは、 わりと最近のことなので tan が使えない環境であればべき級数による近似は、合理的 なのかもしれません。

sin, cos の場合

sin や cos の場合は、収束半径が無限大なので、次数を上げると精度も上がるし、 近似できる範囲もどんどん広がります。 次数を上げることで再現できる波の数が増えていくというのが、直感的には 理解できなかったりします ^^;

f:id:sken20k:20180324175629j:plain