Python3 #28: 数学(Math)

独習 PYTHON 3

Pythonのmathモジュールは、数値計算に関する多くの関数を提供します。以下に主要な機能と使用方法を紹介します。

1. 基本的な数学関数

1. 1. 平方根

平方根を計算するには、math.sqrt()関数を使用します。この関数は引数として与えた数値の平方根を返します。

例:

import math

# 16の平方根を計算
result = math.sqrt(16)  # 結果は4.0
print(result)

負の数の平方根の計算(複素数対応)

負の数の平方根を計算する場合は、cmathモジュールを使用します。

import cmath

# -1の平方根を計算
result = cmath.sqrt(-1)
print(result)  # 1j(虚数単位)

1.2. 冪乗

冪乗(べきじょう)とは、ある数を何回か掛け合わせる操作のことを指します。数学的には、ある数 a を n 回掛け合わせた結果を anと表します。ここで、a を「底」、n を「指数」と呼びます。例えば、23 は 2×2×2 で 8 になります。

具体例をいくつか挙げてみます:

冪乗を計算するには、math.pow()関数または**演算子を使用します。

math.pow()関数の使用

import math

# 2の3乗を計算
result = math.pow(2, 3)  # 結果は8.0
print(result)

**演算子の使用

# 2の3乗を計算
result = 2 ** 3  # 結果は8
print(result)

math.pow()関数と**演算子はどちらも冪乗を計算するために使用できます。どちらを使用しても結果は同じです。数値計算やプログラミングの場面に応じて適切な方法を選択してください。

1.3. 対数

Pythonでは、数学的な計算を行うためのmathモジュールを使用して対数(logarithm)を計算することができます。このモジュールには、さまざまな対数関数が含まれており、自然対数(底e)、常用対数(底10)、および任意の底を持つ対数を計算する関数が含まれています。

mathモジュールの対数関数

math.log(x): 底e(自然対数)の対数を計算します。
例:

import math
print(math.log(10)) # 出力: 2.302585092994046

math.log(x, base): 任意の底での対数を計算します。base引数を指定します。
例:

import math
print(math.log(100, 10)) # 出力: 2.0

math.log10(x): 底10の対数(常用対数)を計算します。
例:

import math
print(math.log10(1000)) # 出力: 3.0

math.log2(x): 底2の対数を計算します。
例:

import math
print(math.log2(8)) # 出力: 3.0

1.4. 絶対値

絶対値は、数値の符号を無視して数値の大きさを返す値のことです。Pythonでは、絶対値を計算するために組み込み関数abs()を使用します。

abs()関数

abs()関数は、与えられた数値の絶対値を返します。この関数は整数、浮動小数点数、複素数などの数値データ型に対して使用できます。

使い方と例

import math

# 絶対値の計算
def calculate_absolute_values():
    # 整数の絶対値
    int_value = -5
    int_absolute = abs(int_value)
    print(f"{int_value}の絶対値は {int_absolute}")

    # 浮動小数点数の絶対値
    float_value = -3.14
    float_absolute = abs(float_value)
    print(f"{float_value}の絶対値は {float_absolute}")

    # 複素数の絶対値
    complex_value = complex(-3, 4)
    complex_absolute = abs(complex_value)
    print(f"{complex_value}の絶対値は {complex_absolute}")

# メイン関数
if __name__ == "__main__":
    print("絶対値の計算例:")
    calculate_absolute_values()

1.5. 指数関数

Pythonでは、mathモジュールを使用して指数関数を計算できます。指数関数は、ある数を指定した指数でべき乗する操作です。特に重要なのは自然指数関数 ex で、これは数学や物理学で広く使われています。

mathモジュールの指数関数

math.exp(x): 自然対数の底 ee のべき乗を計算します。すなわち、 exを計算します。

import math
result = math.exp(2)
print(result)  # 出力: 7.3890560989306495

math.pow(x, y): 任意の数 xxyy 乗を計算します。すなわち、 xyx^y を計算します。

import math
result = math.pow(2, 3)
print(result)  # 出力: 8.0

累乗演算子 **: Pythonの組み込み演算子 ** を使ってべき乗を計算します。こちらも任意の数 x の y 乗を計算します。

result = 2 ** 3
print(result)  # 出力: 8

コード全体の例

以下に、指数関数の計算例を一つのコードにまとめます。

import math

def calculate_exponential():
    # 自然対数の底 e のべき乗
    value = 2
    exp_value = math.exp(value)
    print(f"e^{value} の結果は {exp_value}")

    # 任意の数 x の y 乗
    base = 2
    exponent = 3
    power_value = math.pow(base, exponent)
    print(f"{base}^{exponent} の結果は {power_value}")

    # 組み込み演算子 ** を使ったべき乗
    power_operator_value = base ** exponent
    print(f"{base}**{exponent} の結果は {power_operator_value}")

# メイン関数
if __name__ == "__main__":
    calculate_exponential()

2. 定数

定数は、プログラム内で変更されることを意図していない値です。Pythonには、特定の数学定数を提供するmathモジュールがあります。これらの定数は、数学や科学の計算でよく使用されます。

主な定数

π(パイ): math.pi: 円周率 π\pi の値を表します。約 3.14159 です。

import math
print(math.pi)  # 出力: 3.141592653589793

e(自然対数の底): math.e: 自然対数の底?の値を表します。約 2.71828 です。

import math
print(math.e)  # 出力: 2.718281828459045

τ(タウ): math.tau :2πを表します。円周率の2倍で約 6.28318 です。

import math
print(math.tau)  # 出力: 6.283185307179586

無限大: math.inf: 正の無限大を表します。負の無限大は -math.inf です。

import math
print(math.inf)  # 出力: inf
print(-math.inf)  # 出力: -inf

NaN(Not a Number): math.nan: 数ではない値を表します。計算が無効になる場合に使用されます。

import math
print(math.nan)  # 出力: nan

具体例

以下に、上記の定数を使用した具体的な例を示します。

import math

def demonstrate_constants():
    # πの使用例: 円の面積を計算
    radius = 5
    area = math.pi * (radius ** 2)
    print(f"半径 {radius} の円の面積は {area:.2f}")

    # eの使用例: 自然対数を使用した計算
    exp_value = math.exp(2)
    print(f"e の 2 乗は {exp_value:.2f}")

    # τの使用例: 完全な円の周の長さ
    circumference = math.tau * radius
    print(f"半径 {radius} の円の周の長さは {circumference:.2f}")

    # 無限大の使用例: 数学的な比較
    is_infinite = math.inf > 1000
    print(f"無限大は 1000 より大きい: {is_infinite}")

    # NaNの使用例: 無効な計算結果
    nan_value = math.nan
    print(f"NaN の値: {nan_value}")

# メイン関数
if __name__ == "__main__":
    demonstrate_constants()

3. 角度変換

Pythonでは、角度の変換を行うためにmathモジュールを使用できます。よく使用される角度変換には、度からラジアンへの変換、およびラジアンから度への変換があります。

主な関数

math.radians(x): 度をラジアンに変換します。1度は π/180 ラジアンです。

import math
degrees = 180
radians = math.radians(degrees)
print(radians)  # 出力: 3.141592653589793

math.degrees(x):ラジアンを度に変換します。1ラジアンは 180/π度です。

import math
radians = math.pi
degrees = math.degrees(radians)
print(degrees)  # 出力: 180.0

具体例

以下に、度からラジアン、およびラジアンから度への変換の具体例を示します。

import math

def convert_degrees_to_radians(degrees):
    radians = math.radians(degrees)
    print(f"{degrees} 度は {radians} ラジアンです。")
    return radians

def convert_radians_to_degrees(radians):
    degrees = math.degrees(radians)
    print(f"{radians} ラジアンは {degrees} 度です。")
    return degrees

# メイン関数
if __name__ == "__main__":
    degrees = 90
    radians = convert_degrees_to_radians(degrees)

    radians = math.pi / 4
    degrees = convert_radians_to_degrees(radians)

出力例

90 度は 1.5707963267948966 ラジアンです。
0.7853981633974483 ラジアンは 45.0 度です。

4. 三角関数

Pythonのmathモジュールを使用すると、さまざまな三角関数を簡単に計算できます。これには、サイン、コサイン、タンジェント、およびそれらの逆関数が含まれます。これらの関数は、主にラジアンを引数として使用します。

4.1. 主な三角関数

math.sin(x): ラジアンでの角度 xのサインを計算します。

import math
result = math.sin(math.pi / 2)
print(result)  # 出力: 1.0

math.cos(x):ラジアンでの角度?のコサインを計算します。

import math
result = math.cos(math.pi)
print(result)  # 出力: -1.0

math.tan(x): ラジアンでの角度?のタンジェントを計算します。

import math
result = math.tan(math.pi / 4)
print(result)  # 出力: 0.9999999999999999 (実際は1.0)

4.2. 逆三角関数

math.asin(x): 値?のアークサイン(逆サイン)を計算します。結果はラジアンで返されます。

import math
result = math.asin(1)
print(result)  # 出力: 1.5707963267948966 (π/2)

math.acos(x): 値?のアークコサイン(逆コサイン)を計算します。結果はラジアンで返されます。

import math
result = math.acos(-1)
print(result)  # 出力: 3.141592653589793 (π)

math.atan(x): 値?のアークタンジェント(逆タンジェント)を計算します。結果はラジアンで返されます。

import math
result = math.atan(1)
print(result)  # 出力: 0.7853981633974483 (π/4)

4.3. 具体例

以下に、主要な三角関数と逆三角関数の使用例を示します。

import math

def demonstrate_trigonometric_functions():
    # サイン
    angle_rad = math.pi / 2
    sin_value = math.sin(angle_rad)
    print(f"角度 {angle_rad} ラジアンのサインは {sin_value}")

    # コサイン
    angle_rad = math.pi
    cos_value = math.cos(angle_rad)
    print(f"角度 {angle_rad} ラジアンのコサインは {cos_value}")

    # タンジェント
    angle_rad = math.pi / 4
    tan_value = math.tan(angle_rad)
    print(f"角度 {angle_rad} ラジアンのタンジェントは {tan_value}")

    # 逆サイン
    value = 1
    asin_value = math.asin(value)
    print(f"値 {value} の逆サインは {asin_value} ラジアン")

    # 逆コサイン
    value = -1
    acos_value = math.acos(value)
    print(f"値 {value} の逆コサインは {acos_value} ラジアン")

    # 逆タンジェント
    value = 1
    atan_value = math.atan(value)
    print(f"値 {value} の逆タンジェントは {atan_value} ラジアン")

# メイン関数
if __name__ == "__main__":
    demonstrate_trigonometric_functions()

出力例

角度 1.5707963267948966 ラジアンのサインは 1.0
角度 3.141592653589793 ラジアンのコサインは -1.0
角度 0.7853981633974483 ラジアンのタンジェントは 0.9999999999999999
値 1 の逆サインは 1.5707963267948966 ラジアン
値 -1 の逆コサインは 3.141592653589793 ラジアン
値 1 の逆タンジェントは 0.7853981633974483 ラジアン

5. その他の関数

5.1. 階乗(Factorial)

math.factorial(x) 与えられた数 ? の階乗を計算します。階乗は ? から 1 までの全ての整数の積です。

import math
result = math.factorial(5)
print(result)  # 出力: 120

5.2. 最大公約数(Greatest Common Divisor, GCD)

math.gcd(x, y)与えられた2つの数 x と y の最大公約数を計算します。最大公約数は、両方の数を割り切ることができる最大の整数です。

import math
result = math.gcd(48, 18)
print(result)  # 出力: 6

5.3. 小数点以下の切り捨て、切り上げ

math.floor(x): 与えられた数 ? を超えない最大の整数を返します(切り捨て)。

import math
result = math.floor(3.7)
print(result) # 出力: 3

math.ceil(x): 与えられた数 ? より大きいか等しい最小の整数を返します(切り上げ)。

import math
result = math.ceil(3.3)
print(result) # 出力: 4

math.trunc(x): 与えられた数 ? の小数点以下を切り捨てて整数部分を返します(ゼロ方向への丸め)。

import math
result = math.trunc(3.9)
print(result) # 出力: 3

5.4. 具体例

以下に、上記の関数を使用した具体的な例を示します。

import math

def demonstrate_math_functions():
    # 階乗
    num = 5
    factorial_value = math.factorial(num)
    print(f"{num}の階乗は {factorial_value} です。")

    # 最大公約数
    num1 = 48
    num2 = 18
    gcd_value = math.gcd(num1, num2)
    print(f"{num1} と {num2} の最大公約数は {gcd_value} です。")

    # 小数点以下の切り捨て
    value = 3.7
    floor_value = math.floor(value)
    print(f"{value} の切り捨ては {floor_value} です。")

    # 小数点以下の切り上げ
    value = 3.3
    ceil_value = math.ceil(value)
    print(f"{value} の切り上げは {ceil_value} です。")

    # 小数点以下の切り捨て(ゼロ方向への丸め)
    value = 3.9
    trunc_value = math.trunc(value)
    print(f"{value} の切り捨て(ゼロ方向への丸め)は {trunc_value} です。")

# メイン関数
if __name__ == "__main__":
    demonstrate_math_functions()

6. サンプルコード

import math

# 平方根
print("Square root of 16:", math.sqrt(16))

# 冪乗
print("2 raised to the power 3:", math.pow(2, 3))

# 対数
print("Natural log of 10:", math.log(10))
print("Log base 10 of 10:", math.log10(10))

# 定数
print("Value of pi:", math.pi)
print("Value of e:", math.e)

# 角度変換
print("180 degrees in radians:", math.radians(180))
print("Pi radians in degrees:", math.degrees(math.pi))

# 三角関数
print("sin(30 degrees):", math.sin(math.radians(30)))
print("cos(60 degrees):", math.cos(math.radians(60)))
print("tan(45 degrees):", math.tan(math.radians(45)))

# 階乗
print("Factorial of 5:", math.factorial(5))

# 最大公約数
print("GCD of 48 and 64:", math.gcd(48, 64))

# 小数点以下の切り捨て、切り上げ
print("Floor of 3.7:", math.floor(3.7))
print("Ceil of 3.3:", math.ceil(3.3))

これで、mathモジュールの基本的な使用方法が理解できたと思います。このモジュールを活用して、様々な数値計算を効率的に行うことができます。

購読
通知
0 Comments
Inline Feedbacks
View all comments