【python】べき乗の計算方法[mathライブラリ]

2020年3月31日

べき乗計算はmathライブラリのpow関数や演算子[**]を使用することで計算できます。

mathライブラリを使用したべき乗計算(pow関数)

【計算結果:x^y】= math.pow(【x:底】,【y:指数】)

演算子を使用してべき乗計算(演算子[**])

【計算結果:x^y】= 【x:底】**【y:指数】

べき乗計算の使用例(10^n)[mathライブラリ]

基本的なべき乗計算を行ってpow関数を確認しましょう。
10のn乗を見てみましょう。
pow関数の第一引数に10を、第二引数へ指数を-3から3まで設定します。
この時小数点だけ移動して 0.001(10^-3)から 1000(10^3)まで計算できることが確認できました。

10のn乗計算結果
10^-30.001
10^-20.01
10^-10.1
10^-01
10^110
10^2100
10^31000
import math

print( "10^-3 =", math.pow( 10, -3) ) #10^-3 = 0.001
print( "10^-2 =", math.pow( 10, -2) ) #10^-2 = 0.01
print( "10^-1 =", math.pow( 10, -1) ) #10^-1 = 0.1
print( "10^0  =", math.pow( 10, 0) )  #10^0  = 1.0
print( "10^1  =", math.pow( 10, 1) )  #10^1  = 10.0
print( "10^2  =", math.pow( 10, 2) )  #10^2  = 100.0
print( "10^3  =", math.pow( 10, 3) )  #10^3  = 1000.0

べき乗計算の使用例(n乗根としての計算)[mathライブラリ]

べき乗計算もn乗根計算も数学的には同じものなので両者ともpow関数を使用して計算できます。
指数を1/2,1/3・・・1/n として分母を設定すればn乗根計算が可能です。

import math
print( "4^0.5  =", math.pow( 4, 0.5) )  #4^0.5  = 2.0

今回は4の平方根なので結果は2となります。

演算子を使用してべき乗計算

mathライブラリを使用することなくpythonのデフォルト演算子を使用してべき乗計算を行うことができます。
計算結果は虚数にならない限りどちらを使用しても結果は同じです。

print( "3^2  =" , 3**2 )   #3^2  = 9
print( "2^10 =" , 2**10 )  #2^10 = 1024
print( "9^0.5 =", 9**0.5 ) #9^0.5 = 3.0

べき乗計算 結果が虚数の時(エラー発生)[mathライブラリ]

べき乗計算は結果が虚数になるときの考慮が必要です。
計算の底はマイナスの時、n乗根の計算をしたときに発生します。(nは偶数)
pow関数は結果が虚数の時はエラーになるので注意しましょう。

import math

try:
    print( "-4^0.5  =", math.pow( -4, 0.5) )
except:
    import traceback
    traceback.print_exc()

エラー結果

Traceback (most recent call last):
  File "pow.py", line 28, in sample3
    print( "-4^0.5  =", math.pow( -4, 0.5) )
ValueError: math domain error

べき乗計算_結果が虚数の時[演算子計算]

pow関数[mathライブラリ]は結果が虚数となるべき乗計算はできないですが、演算子計算の場合は可能です。
計算結果は虚数で表現されてjが使用されます。(j * j = -1)
基本的には言語の標準機能よりライブラリを使用したほうが高性能であるはずですが、べき乗計算に関してはpythonのデフォルト機能の方が高性能なのかもしれません。

print( "     -4^0.5 =", -4**0.5 )      #     -4^0.5 = -2.0
print( "   (-4)^0.5 =", (-4)**0.5 )    #   (-4)^0.5 = (1.2246467991473532e-16+2j)
print( "(-0.81)^0.5 =", (-0.81)**0.5 ) #(-0.81)^0.5 = (5.5109105961630896e-17+0.9j)

マイナス値をべき乗するには底の値を括弧で括らなければいけません。

虚数の計算結果については実数の方はとても小さい数の為、0といっても良いでしょう。
結果として-4の平方根は2jで正しいので計算できています。
-0.81の平方根も0.9jで良いので、小数点同士のべき乗もあっています。

虚数計算が必要な方であれば演算子を使用してべき乗計算を行いましょう。


ソースコードはこちらから