切り立った崖をなだらかに。二重指数関数変換のススメ
はじめての数学記事です(実を言うと専門は物理)。
最近、プログラミングに組み込むと大変便利だということで二重指数関数変換積分の存在を教わったのですが、
ちょっとこれに感動しちゃったので記事にして紹介。
どっちにしても手計算でやるには面倒だけどプログラミングに組み込むうえではこれがあるとほんとに便利。
これ発見したの日本人だって。すごいね。いやほんとにすごいと思う。
二重指数関数変換とは
Wiki見てもイメージがつかめないので、超ざっくり一言でいうと、
切り立った関数をなだらかにする。
というものが、この二重指数関数変換。
切り立った関数というのは、一点だけが極端にとんがってたり、局地的な変化を示すような関数のこと。
要するに手計算で積分するにはめっちゃむずな関数。
それでも、そんな関数を正確に、誤差を少なく便利に計算したい…!ってときにこの二重指数関数変換をほどこすと、局地的に切り立った関数が全体的になだらかになり、大変計算しやすくなるんだぞってことです。
具体的にやることを言うと、たとえばある関数があるとき
その関数に二重指数関数的に減衰する関数()を施して、積分領域を広めてやるということをしてあげるのです。
だから二重指数関数”変換”というんですね。
なぜ二重指数関数がいいのかというと、これをほどこした後の積分とほどこす前の積分との誤差が非常に小さくなるのが二重指数関数だからという理由。
一応その証明もありますが、ここでは割愛。
んで、ほどこす二重指数関数にもいくつかパターンに応じた最適なものというのがある。
たとえば
形式の場合、この形式に応じた最適の二重指数関数は
となる。
他にも
などといったパターンがあります。
実例を見てみよう。
Excelでちょちょっと作った適当な関数。
関数は
というクソみたいな関数に設定。
ー1と1で無限大に発散するということで、積分領域は
とする。
これが先で言った”切り立った関数”の一例。
だが、このままでは計算がめんどすぎて嫌になる。
ということで使うのが二重指数関数変換なのだが、具体的にどうするかというと、
この関数は
の形式なので、この形式に応じた最適の二重指数関数として、
を施してあげる。
tanhなのでは-1から1までの値域で、一方tはどこまでも行ける。
んでこのはと同じ(このグラフの縦軸がxと同じ)なので、
xは有限の範囲でも、その変数tは無制限という新たな関数が生まれる。
なのでとのグラフをとってあげれば、元と同じ関数でありながら無限の範囲の積分が出来る
=積分領域を拡大し、きりたった崖をなだらかにしてあげることができるのです。
ちなみにそのグラフがこんな感じ。
さきほども言ったように、このtに制限はありません。
xがー1と1で発散したのに対し、このtはどこまでいっても発散することはない。
横軸がtになったので最終的にはこういう積分の式になります。
台形公式の導入
具体的にやることは、
関数を等間隔の幅ずつで区切り、そうしてできる横,縦の面積をひたすら足していく。
区分求積法みたいな感じ。
実際に式で書くと、
この和を無限項ではなく有限項で打ち切ったを求め、 と の値がほぼ等しくするようにすれば、完成。
以上。
どこでこんなの使うんだよって話になりそうですが、とんちんかんな関数の積分計算に文句を言ってくるプログラムにこれを組み込んだりして、計算を進めていったりするのです。
まあ…それ以外おもいつかないけど。
というわけで今日は数学のお話でした。