「Python3」math(数学関数・床関数・天井関数・絶対値 など)

math math

mathは名前の通り数学関数を提供しているモジュールになります。
mathはPython標準モジュールです。なので、使用したい場合にインストールする必要がありません。
このモジュールで提供されている各関数の説明と、分かりやすくmatplotlibライブラリを用いて図で表したいと思います。

今回説明する数学関数を表にまとめます。

数学関数 説明
math.ceil(x) 小数点以下を切り上げて返す(天井関数)
math.copysign(x, y) abs(x)*sgn(y) xの絶対値をyの符号にした値を返す
math.fabs(x) xの絶対値を返す
math.factorial(x) xの階乗を返す
math.floor(x) 小数点以下を切り下げて返す(床関数)
math.fmod(x, y) x%y した値を返す
math.frexp(x) xの(基数が2で)仮数部と指数部を (m, e) のペアとして返す
math.fsum(iterable) 中の値の浮動小数点数の正確な和を返す
math.gcd(a, b) 整数x, yの最大公約数を返す
math.isclose(a, b, rel_tol=1e-09, abs_tol=0.0) aとbの値が互いに近い場合True、そうでない場合はFalseを返す
math.isfinite(x) xが有限数の場合Trueを返す
math.isinf(x) xが無限数の場合Trueを返す
math.isnan(x) xがNaNの場合Trueを返す
math.ldexp(x, i) x*(2**i) を返す
math.modf(x) xの小数部分と整数部分を返す
math.remainder(x, y) IEEE754標準方式のxをyで割った剰余を返す
math.trunc(x) xの整数部分を返す

また、インポートしたライブラリはこちらになります。

import math
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

math.ceil(x)

math.ceil(x)は、小数点以下を切り上げて返します(天井関数)。

<ソースコード>
print(math.ceil(1.25))
x = np.arange(-5.0, 5.1, 0.01)
y = list(map(math.ceil , x))
plt.scatter(x, y, s=10, color='black')
plt.plot(x, y, linewidth = 0.1, color='black')
plt.show()
<出力結果>
2

math 数学関数 説明01

math.copysign(x, y)

math.copysign(x, y)は、xの絶対値をyの符号にした値を返します。

<ソースコード>
print(math.copysign(10, -1))
    
x = np.arange(-5.0, 5.1, 0.01)
y = np.arange(-5.0, 5.1, 0.01)
x, y = np.meshgrid(x, y)
f = np.vectorize(math.copysign)
z = f(x, y)
fig = plt.figure()
ax = Axes3D(fig)
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")
ax.set_xlim3d(left = 5, right = -5)
ax.set_ylim3d(bottom = -5, top = 5)
ax.set_zlim3d(bottom = -5, top = 5)
surf = ax.plot_surface(x, y, z, cmap = "bwr", linewidth=0)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
<出力結果>
-10.0

math 数学関数 説明03

math.fabs(x)

math.fabs(x)は、xの絶対値を返します。

<ソースコード>
print(math.fabs(-10))
    
x = np.arange(-5.0, 5.1, 0.01)
y = list(map(math.fabs , x))
plt.scatter(x, y, s=10, color='black')
plt.plot(x, y, linewidth = 0.1, color='black')
plt.show()
<出力結果>
10.0

math 数学関数 説明04

math.factorial(x)

math.factorial(x)は、xの階乗を返します。

<ソースコード>
print(math.factorial(4))
    
x = range(5)
y = list(map(math.factorial , x))
plt.scatter(x, y, s=10, color='black')
plt.plot(x, y, linewidth = 0.1, color='black')
plt.show()
<出力結果>
24

math 数学関数 説明05

math.floor(x)

math.floor(x)は、小数点以下を切り下げて返します(床関数)。

<ソースコード>
print(math.floor(1.25))

x = np.arange(-5.0, 5.1, 0.01)
y = list(map(math.floor , x))
plt.scatter(x, y, s=10, color='black')
plt.plot(x, y, linewidth = 0.1, color='black')
plt.show()
<出力結果>
1

math 数学関数 説明02

math.fmod(x, y)

math.fmod(x, y)は、x%yした値を返します。

<ソースコード>
print(math.fmod(10, 3))
<出力結果>
1.0

math.frexp(x)

math.frexp(x)は、xの(基数が2で)仮数部と指数部を (m, e) のペアとして返します。

<ソースコード>
print(math.frexp(10))
<出力結果>
(0.625, 4)

math.fsum(iterable)

math.fsum(iterable)は、中の値の浮動小数点数の正確な和を返します。

<ソースコード>
print(sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1]))
    
print(math.fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1]))
<出力結果>
0.9999999999999999
1.0

math.gcd(a, b)

math.gcd(a, b)は、整数x, yの最大公約数を返します。

<ソースコード>
print(math.gcd(52, 117))
<出力結果>
13

math.isclose(a, b, rel_tol=1e-09, abs_tol=0.0)

math.isclose(a, b, rel_tol=1e-09, abs_tol=0.0)は、aとbの値が互いに近い場合True、そうでない場合はFalseを返します。

<ソースコード>
print(math.isclose(10, 10.5, rel_tol=0.05, abs_tol=1e-09))
<出力結果>
True

rel_tolは相対許容差(aとbの絶対値の大きい方に対するaとbの許容される最大の差)です。 例えば、許容差を5%に設定する場合「rel_tol=0.05」を渡します。 デフォルトの許容差は1e-09で、2値が9桁同じことを保証します。
abs_tolは最小の絶対許容差です。0に近い値を比較するのに有用です。abs_tolは0より大きくなければいけません。

math.isfinite(x)

math.isfinite(x)は、xが有限数の場合Trueを返します。

<ソースコード>
print(math.isfinite(3))
<出力結果>
True

math.isinf(x)

math.isinf(x)は、xが無限数の場合Trueを返します。

<ソースコード>
print(math.isinf(1e1000))
<出力結果>
True

math.isnan(x)

math.isnan(x)は、xがNaNの場合Trueを返します。

<ソースコード>
print(math.isnan(math.nan))
<出力結果>
True

math.ldexp(x, i)

math.ldexp(x, i)は、x*(2**i) を返します。

<ソースコード>
print(math.ldexp(3, 2))
<出力結果>
12.0

math.modf(x)

math.modf(x)は、xの小数部分と整数部分を返します。

<ソースコード>
print(math.modf(1.25))
<出力結果>
(0.25, 1.0)

math.remainder(x, y)

math.remainder(x, y)は、IEEE754標準方式のxをyで割った剰余を返します。

<ソースコード>
print(math.remainder(10, 3))
<出力結果>
1.0

math.trunc(x)

math.trunc(x)は、xの整数部分を返します。

<ソースコード>
print(math.trunc(234112.1234))

x = np.arange(-5.0, 5.1, 0.01)
y = list(map(math.trunc , x))
plt.scatter(x, y, s=10, color='black')
plt.plot(x, y, linewidth = 0.1, color='black')
plt.show()
<出力結果>
234112

math 数学関数 説明06

コメント

タイトルとURLをコピーしました