Python

Pythonでべき乗や平方根を計算する方法を解説

By 2021年3月17日No Comments

Pythonでべき乗や平方根を計算する方法は、いくつか種類があります。

それぞれの方法について、使い方や違いについて解説していきます。

べき乗の計算方法

Pythonでべき乗(aのb乗)を計算する方法は主に3つあります。

1. 「**」演算子

a = 2 ** 3   # 2 の 3乗
print(a)

実行結果

8

2. pow()関数

a = pow(2, 3)   # 2 の 3乗
print(a)

実行結果

8

3. math.pow()関数

import math

a = math.pow(2, 3)   # 2 の 3乗
print(a)

実行結果

8.0

細かな仕様の違いはありますが、どの計算方法を使っても大丈夫です。

「**」演算子を使う方法が、一番シンプルでおすすめです。

仕様の違いについては、記事の最後で解説します。

小数点や負数のべき乗計算も可能です。

a = 1.5 ** 3 # 小数点
print(a)

b = -2 ** 3 # 負数
print(b)

c = 0 ** 3 # ゼロ
print(c)

実行結果

3.375
-8
0

平方根の計算方法

平方根は、mathライブラリのsqrt()関数で求めることができます。

a = math.sqrt(16) # 16 の平方根
print(a)

実行結果

4.0

平方根は、1/2乗(=0.5乗)で計算できることを使えば、通常のべき乗計算でも平方根を求めることができます。

a = 16 ** 0.5
print(a)

実行結果

4.0

応用的なべき乗の計算

Pythonのべき乗計算では、実数や複素数での演算もサポートされています。

a = 1.5 ** -1.5 # 実数
print(a)

b = 2.718 ** 3.14j # 複素数(jは虚数単位)
print(b)

実行結果

0.5443310539518174
(-0.9999981602123581+0.0019182210245099242j)

科学的な計算などをする場合には、覚えておくと良いでしょう。

コラム:べき乗計算の仕様の違いについて

べき乗の計算方法は、下記の3種類を紹介しました。

1. 「**」演算子

2. pow()関数

3. math.pow()関数

この3つの計算方法の主な仕様の違いとしては、下記があります。

・「**」とpow()は、整数同士のべき乗結果は、整数になる。

・math.pow()は、整数同士のべき乗結果は、浮動小数点型になる。

・math.pow()は、複素数演算をサポートしていない。

・「**」とpow()は、内部の計算方法は全く同じで、違いがない。

実際に確認してみると、このような結果になります。

import math

values = [0, 1.5, 3, -1.5, -3]
calc_1 = "a ** b"
calc_2 = "pow(a, b)"
calc_3 = "math.pow(a, b)"
       
for a in values:
    for b in values:
   
        print("=== {} の {} 乗 ===".format(a, b))

        for now_calc in [calc_1, calc_2, calc_3]:

            result = None
            try:
                result = eval(now_calc)
            except:
                result = "計算できません"
            print(" {:<15} : {}".format(now_calc, result))

実行結果

=== 0 の 0 乗 ===
a ** b          : 1
pow(a, b)       : 1
math.pow(a, b)  : 1.0
=== 0 の 1.5 乗 ===
a ** b          : 0.0
pow(a, b)       : 0.0
math.pow(a, b)  : 0.0
=== 0 の 3 乗 ===
a ** b          : 0
pow(a, b)       : 0
math.pow(a, b)  : 0.0
=== 0 の -1.5 乗 ===
a ** b          : 計算できません
pow(a, b)       : 計算できません
math.pow(a, b)  : 計算できません
=== 0 の -3 乗 ===
a ** b          : 計算できません
pow(a, b)       : 計算できません
math.pow(a, b)  : 計算できません
=== 1.5 の 0 乗 ===
a ** b          : 1.0
pow(a, b)       : 1.0
math.pow(a, b)  : 1.0
=== 1.5 の 1.5 乗 ===
a ** b          : 1.8371173070873836
pow(a, b)       : 1.8371173070873836
math.pow(a, b)  : 1.8371173070873836
=== 1.5 の 3 乗 ===
a ** b          : 3.375
pow(a, b)       : 3.375
math.pow(a, b)  : 3.375
=== 1.5 の -1.5 乗 ===
a ** b          : 0.5443310539518174
pow(a, b)       : 0.5443310539518174
math.pow(a, b)  : 0.5443310539518174
=== 1.5 の -3 乗 ===
a ** b          : 0.2962962962962963
pow(a, b)       : 0.2962962962962963
math.pow(a, b)  : 0.2962962962962963
=== 3 の 0 乗 ===
a ** b          : 1
pow(a, b)       : 1
math.pow(a, b)  : 1.0
=== 3 の 1.5 乗 ===
a ** b          : 5.196152422706632
pow(a, b)       : 5.196152422706632
math.pow(a, b)  : 5.196152422706632
=== 3 の 3 乗 ===
a ** b          : 27
pow(a, b)       : 27
math.pow(a, b)  : 27.0
=== 3 の -1.5 乗 ===
a ** b          : 0.19245008972987526
pow(a, b)       : 0.19245008972987526
math.pow(a, b)  : 0.19245008972987526
=== 3 の -3 乗 ===
a ** b          : 0.037037037037037035
pow(a, b)       : 0.037037037037037035
math.pow(a, b)  : 0.037037037037037035
=== -1.5 の 0 乗 ===
a ** b          : 1.0
pow(a, b)       : 1.0
math.pow(a, b)  : 1.0
=== -1.5 の 1.5 乗 ===
a ** b          : (-3.374729744674154e-16-1.8371173070873836j)
pow(a, b)       : (-3.374729744674154e-16-1.8371173070873836j)
math.pow(a, b)  : 計算できません
=== -1.5 の 3 乗 ===
a ** b          : -3.375
pow(a, b)       : -3.375
math.pow(a, b)  : -3.375
=== -1.5 の -1.5 乗 ===
a ** b          : (-9.999199243478975e-17+0.5443310539518174j)
pow(a, b)       : (-9.999199243478975e-17+0.5443310539518174j)
math.pow(a, b)  : 計算できません
=== -1.5 の -3 乗 ===
a ** b          : -0.2962962962962963
pow(a, b)       : -0.2962962962962963
math.pow(a, b)  : -0.2962962962962963
=== -3 の 0 乗 ===
a ** b          : 1
pow(a, b)       : 1
math.pow(a, b)  : 1.0
=== -3 の 1.5 乗 ===
a ** b          : (-9.545177148524161e-16-5.196152422706632j)
pow(a, b)       : (-9.545177148524161e-16-5.196152422706632j)
math.pow(a, b)  : 計算できません
=== -3 の 3 乗 ===
a ** b          : -27
pow(a, b)       : -27
math.pow(a, b)  : -27.0
=== -3 の -1.5 乗 ===
a ** b          : (-3.5352507957496895e-17+0.19245008972987526j)
pow(a, b)       : (-3.5352507957496895e-17+0.19245008972987526j)
math.pow(a, b)  : 計算できません
=== -3 の -3 乗 ===
a ** b          : -0.037037037037037035
pow(a, b)       : -0.037037037037037035
math.pow(a, b)  : -0.037037037037037035

Udemyの動画学習でもPythonを勉強しよう!

「平日の夜の勉強会には時間が間に合わなくて参加できない」「通勤時間のわずかな隙間時間を勉強時間にあてたい」「本ではよく分からないところを動画で理解を深めたい」そんなあなたはUdemyの動画学習がお勧めです!

UdemyのPythonおすすめ33講座レビューリスト
HOSL

Author HOSL

More posts by HOSL