Python math.cbrt() 関数
数学計算において、立方根は非常に重要な演算です。平方根とは異なり、立方根は負の数を扱うことができます。なぜなら、負の数の立方は依然として負の数だからです。
math.cbrt()は Python 3.11 で導入された関数で、ある数の立方根(cube root)です。x の立方根、つまり y³ = x を満たす y の値を返します。
単語の意味: cbrtは「cube root」の略で、「立方根」という意味です。
基本構文とパラメータ
math.cbrt()は math モジュールの静的関数で、使用する際は最初に math モジュールをインポートする必要があります。
構文形式
import math math.cbrt(x)
引数の説明
- 引数:
x- 型:数値(整数または浮動小数点数)
- 説明:立方根を計算する数。負の数を含む任意の実数を指定できます。
戻り値
- 返すのは
x立方根で、戻り値の型は浮動小数点数です。 - x が 0 の場合は、0 を返します。
- x が負の数の場合は、負の数の立方根を返します。
実例
実例を通して徹底的にマスターしましょうmath.cbrt()の使い方。
例 1:基本用法 - 正の数の立方根を計算する
実例
import math
# いくつかの一般的な数値の立方根を計算する
print("8 の立方根:", math.cbrt(8)) # 2.0、2³ = 8 なので
print("27 の立方根:", math.cbrt(27)) # 3.0、3³ = 27 だから
print(1000 の立方根:, math.cbrt(1000)) # 10.0、10³ = 1000 のため
print("2 の立方根:", math.cbrt(2)) # 约等于 1.2599
# 0 の立方根
print("0 の立方根:", math.cbrt(0)) # 0.0
# いくつかの一般的な数値の立方根を計算する
print("8 の立方根:", math.cbrt(8)) # 2.0、2³ = 8 なので
print("27 の立方根:", math.cbrt(27)) # 3.0、3³ = 27 だから
print(1000 の立方根:, math.cbrt(1000)) # 10.0、10³ = 1000 のため
print("2 の立方根:", math.cbrt(2)) # 约等于 1.2599
# 0 の立方根
print("0 の立方根:", math.cbrt(0)) # 0.0
実行結果:
8 的立方根: 2.0 27 的立方根: 3.0 1000 的立方根: 10.0 2 的立方根: 1.2599210498948732 0 的立方根: 0.0
例 2:負の数の立方根を計算する
math.cbrt()の強力な点は、負の数を正しく処理できることです。一方、math.sqrt()は負の数に対してエラーを返します。
実例
import math
# 負の数の立方根を計算
print("-8 の立方根:", math.cbrt(-8)) # -2.0、(-2)³ = -8 のため
print("-27 の立方根:", math.cbrt(-27)) # -3.0、なぜなら (-3)³ = -27
print("-1 の立方根:", math.cbrt(-1)) # -1.0
# 比較:sqrt は負数を処理できない
try:
print(math.sqrt(-8))
except ValueError as e:
print("math.sqrt(-8) 报错:", e)
# 負の数の立方根を計算
print("-8 の立方根:", math.cbrt(-8)) # -2.0、(-2)³ = -8 のため
print("-27 の立方根:", math.cbrt(-27)) # -3.0、なぜなら (-3)³ = -27
print("-1 の立方根:", math.cbrt(-1)) # -1.0
# 比較:sqrt は負数を処理できない
try:
print(math.sqrt(-8))
except ValueError as e:
print("math.sqrt(-8) 报错:", e)
実行結果:
-8 的立方根: -2.0 -27 的立方根: -3.0 -1 的立方根: -1.0 math.sqrt(-8) 报错: math domain error
例 3:立方根の性質を検証する
立方根を利用して数学的性質を検証します:a の立方根の3乗は a 自身に等しい。
実例
import math
# 立方根の性質を検証する: cbrt(x)³ = x
test_values = [8, -8, 27, -27, 0.125, -0.125]
for val in test_values:
cube_root = math.cbrt(val)
result = cube_root ** 3
print(f"cbrt({val}) = {cube_root}, 其立方 = {result}")
# 浮点数精度问题
print("\n精度验证:)
print("cbrt(5)³ =", math.cbrt(5) ** 3) # 应该等于 5
# 立方根の性質を検証する: cbrt(x)³ = x
test_values = [8, -8, 27, -27, 0.125, -0.125]
for val in test_values:
cube_root = math.cbrt(val)
result = cube_root ** 3
print(f"cbrt({val}) = {cube_root}, 其立方 = {result}")
# 浮点数精度问题
print("\n精度验证:)
print("cbrt(5)³ =", math.cbrt(5) ** 3) # 应该等于 5
実行結果:
cbrt(8) = 2.0, 其立方 = 8.0 cbrt(-8) = -2.0, 其立方 = -8.0 cbrt(27) = 3.0, 其立方 = 27.0 cbrt(-27) = -3.0, 其立方 = -27.0 cbrt(0.125) = 0.5, 其立方 = 0.125 cbrt(-0.125) = -0.5, 其立方 = -0.125 精度验证: cbrt(5)³ = 5.0
例 4:実際の応用 - 三次方程式を解く
立方根は三次方程式を解くために使用できます。例えば、x³ = 27 を解くと、x = cbrt(27) = 3 となります。
実例
import math
# 実際の問題:体積から辺の長さを求める
# 立方体の箱があると仮定します(体積は1000立方メートル)
# 求边长
volume = 1000
side_length = math.cbrt(volume)
print(f体積が {volume} 立方メートルの立方体の辺の長さ: {side_length:.4f} メートル)
# 物理応用:球の半径を求める
# 已知球体积 V = (4/3)πr³,求半径 r
# r = cbrt(V * 3 / (4 * π))
sphere_volume = 904.78 # 近似球体积
radius = math.cbrt(sphere_volume * 3 / (4 * math.pi))
print(f体積が {sphere_volume:.2f} の球の半径は約: {radius:.4f})
# 実際の問題:体積から辺の長さを求める
# 立方体の箱があると仮定します(体積は1000立方メートル)
# 求边长
volume = 1000
side_length = math.cbrt(volume)
print(f体積が {volume} 立方メートルの立方体の辺の長さ: {side_length:.4f} メートル)
# 物理応用:球の半径を求める
# 已知球体积 V = (4/3)πr³,求半径 r
# r = cbrt(V * 3 / (4 * π))
sphere_volume = 904.78 # 近似球体积
radius = math.cbrt(sphere_volume * 3 / (4 * math.pi))
print(f体積が {sphere_volume:.2f} の球の半径は約: {radius:.4f})
実行結果:
体积为 1000 立方米的正方体,边长为: 10.0000 米 体积为 904.78 的球,半径约为: 6.0000
他の方法との比較
にmath.cbrt()が登場する前は、通常、指数演算子を使用して立方根を計算していました。
実例
import math
x = 27
# 方法1:使用 math.cbrt() (推荐)
result1 = math.cbrt(x)
# 方法2:使用指数运算 x ** (1/3)
result2 = x ** (1/3)
# 方法3:使用 pow() 函数
result3 = pow(x, 1/3)
print(f"math.cbrt({x}) = {result1}")
print(f"{x} ** (1/3) = {result2}")
print(f"pow({x}, 1/3) = {result3}")
# 負数の場合
y = -8
print(f"\n負の数 {y} に対して:)
print(f"math.cbrt({y}) = {math.cbrt(y)}")
print(f"{y} ** (1/3) = {y ** (1/3)}") # 可能产生复数
x = 27
# 方法1:使用 math.cbrt() (推荐)
result1 = math.cbrt(x)
# 方法2:使用指数运算 x ** (1/3)
result2 = x ** (1/3)
# 方法3:使用 pow() 函数
result3 = pow(x, 1/3)
print(f"math.cbrt({x}) = {result1}")
print(f"{x} ** (1/3) = {result2}")
print(f"pow({x}, 1/3) = {result3}")
# 負数の場合
y = -8
print(f"\n負の数 {y} に対して:)
print(f"math.cbrt({y}) = {math.cbrt(y)}")
print(f"{y} ** (1/3) = {y ** (1/3)}") # 可能产生复数
実行結果:
math.cbrt(27) = 3.0 27 ** (1/3) = 2.9999999999999996 pow(27, 1/3) = 2.9999999999999996 对于负数 -8: math.cbrt(-8) = -2.0 -8 ** (1/3) = -(8**(1/3)) = -2.0 # 由于运算符优先级,结果正确但不够直观
説明:math.cbrt()は立方根を計算するための最良の選択です。なぜなら:
- 意味が明確で、コードが読みやすい
- 負の数を正しく処理できる
- 精度が高く、浮動小数点演算の精度問題を回避できる
注意事項
math.cbrt()は Python 3.11+ で使用できる関数で、旧バージョンの Python では使用できません。- 旧バージョンの場合は、
x ** (1/3)或pow(x, 1/3)代わりに使用できます。 - この関数は実数にのみ適用され、複素数はサポートされていません。複素数の立方根が必要な場合は、
cmathモジュールを使用してください。
その他の拡張