プログラムで指数が小数のべき乗を計算するときの話
プログラム乗でべき乗の計算をすることは多々あると思います。
整数のべき乗は簡単です。
では、小数のべき乗はどう考えるべきでしょうか?
例えばみたいなやつです。
使用する言語によっては、これをサポートする関数が用意されてたりします。DelphiとかはPower関数でできますね。
ですが、DelphiもStandard版などにはMathユニットが付属していないそうです。
こういった関数が用意されていない場合、どうすれば計算できるのでしょうか。
指数が小数のべき乗を計算する
答えから書きます。次の式を使うだけです。
式の意味としては簡単です。を変形させただけです。
指数法則で上式の右辺を変えます。
ここで
なので
と、これだけです。
これを使えば関数が用意されていなくても*1、指数が小数のべき乗は計算できます。
できるんですが。。。
この方法にも注意点が・・・
この方法は、真数であるx>0の場合は成立しません。
言語にもよりますが、Delphiの場合だとNanが返ります。
この理由は、が関係しています。
まず、のときです。
なので、での場合を考えてみます。
の場合、です。必ず正の値をとります。
次にの場合、を満たすを考えなければなりませんが、これは存在しません。を満たすにはではなくとするしかないのですが、ネイピア数として定義されたeを0にはできません。を考えても、これはに発散してしまいます。よっては計算不可能です。
最後に、の場合です。例えばとして考えてみるととなりますが、これを満たすyは実数には存在しません。複素数まで拡張すれば存在しますが、プログラム上では非数(Nan)となってしまいます。
以上のことから、指数が小数のべき乗を計算するときは必ず真数が0より大きいことという条件を意識する必要がある。という話でした。
*1:ついでに言えば、関数が用意されている場合でも内部的にはこれをやってるのがほぼです。
ディスカッション
コメント一覧
まだ、コメントがありません