9.2。 算数 —数学関数
このモジュールはいつでも利用できます。 C標準で定義されている数学関数へのアクセスを提供します。
これらの関数は、複素数では使用できません。 複素数のサポートが必要な場合は、 cmath モジュールの同じ名前の関数を使用してください。 ほとんどのユーザーは複素数を理解するために必要なほど多くの数学を学びたくないので、複素数をサポートする関数とサポートしない関数は区別されます。 複素数の結果の代わりに例外を受け取ると、パラメーターとして使用される予期しない複素数を早期に検出できるため、プログラマーは最初にそれが生成された方法と理由を判別できます。
このモジュールでは、次の機能が提供されます。 特に明記されていない限り、すべての戻り値は浮動小数点数です。
9.2.1。 数理論関数と表現関数
- math.ceil(x)
- x の上限を返します。これは x 以上の最小の整数です。 x がfloatでない場合は、
x.__ceil__()
に委任します。これにより、 Integral 値が返されます。
- math.copysign(x, y)
- x の大きさ(絶対値)で、 y の符号を持つfloatを返します。 符号付きゼロをサポートするプラットフォームでは、
copysign(1.0, -0.0)
は -1.0 を返します。
- math.fabs(x)
- x の絶対値を返します。
- math.factorial(x)
- x 階乗を返します。 x が整数でないか負の場合、 ValueError を発生させます。
- math.floor(x)
- x のフロアを返します。これは x 以下の最大の整数です。 x がfloatでない場合は、
x.__floor__()
に委任します。これにより、 Integral 値が返されます。
- math.fmod(x, y)
- プラットフォームCライブラリで定義されているように、
fmod(x, y)
を返します。 Python式x % y
は同じ結果を返さない場合があることに注意してください。 C標準の目的は、fmod(x, y)
が、ある整数 n に対してx - n*y
と正確に(数学的に;無限の精度で)等しくなり、結果がと同じ符号を持つようにすることです。 x およびabs(y)
未満の大きさ。 Pythonのx % y
は、代わりに y の符号の結果を返し、float引数に対して正確に計算できない場合があります。 たとえば、fmod(-1e-100, 1e100)
は-1e-100
ですが、Pythonの-1e-100 % 1e100
の結果は1e100-1e-100
であり、フロートとして正確に表すことはできず、驚くべきことに丸められます。1e100
。 このため、浮動小数点数を操作する場合は関数 fmod()が一般的に推奨され、整数を操作する場合はPythonのx % y
が推奨されます。
- math.frexp(x)
- x の仮数と指数をペア
(m, e)
として返します。 m は浮動小数点数であり、 e はx == m * 2**e
が正確に一致するような整数です。 x がゼロの場合、(0.0, 0)
を返し、それ以外の場合は0.5 <= abs(m) < 1
を返します。 これは、フロートの内部表現をポータブルな方法で「分解」するために使用されます。
- math.fsum(iterable)
iterableの値の正確な浮動小数点合計を返します。 複数の中間部分和を追跡することにより、精度の低下を回避します。
>>> sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1]) 0.9999999999999999 >>> fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1]) 1.0
アルゴリズムの精度は、IEEE-754算術保証と、丸めモードが半偶数である一般的なケースに依存します。 一部のWindows以外のビルドでは、基になるCライブラリが拡張精度の加算を使用し、中間合計を2倍に丸めて、最下位ビットでオフになる場合があります。
詳細な説明と2つの代替アプローチについては、 ASPNクックブックのレシピで正確な浮動小数点の合計を参照してください。
- math.gcd(a, b)
整数 a と b の最大公約数を返します。 a または b のいずれかがゼロ以外の場合、
gcd(a, b)
の値は、 a と bの両方を分割する最大の正の整数です。 。gcd(0, 0)
は0
を返します。バージョン3.5の新機能。
- math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)
a と b の値が近い場合は
True
を返し、そうでない場合はFalse
を返します。2つの値が近いと見なされるかどうかは、指定された絶対公差と相対公差に従って決定されます。
rel_tol は相対許容誤差です。これは、 a の大きい方の絶対値に対する a と b の最大許容差です。 b 。 たとえば、許容誤差を5%に設定するには、
rel_tol=0.05
を渡します。 デフォルトの許容値は1e-09
です。これにより、2つの値が約9桁以内で同じになることが保証されます。 rel_tol はゼロより大きくなければなりません。abs_tol は最小絶対許容誤差であり、ゼロに近い比較に役立ちます。 abs_tol は少なくともゼロでなければなりません。
エラーが発生しない場合、結果は
abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
になります。NaN
、inf
、および-inf
のIEEE754特殊値は、IEEE規則に従って処理されます。 具体的には、NaN
は、NaN
を含む他の値に近いとは見なされません。inf
と-inf
は、それら自体に近いと見なされるだけです。バージョン3.5の新機能。
も参照してください
PEP 485 –近似等式をテストするための関数
- math.isfinite(x)
x が無限大でもNaNでもない場合は、
True
を返し、それ以外の場合はFalse
を返します。 (0.0
はが有限であると見なされることに注意してください。)バージョン3.2の新機能。
- math.isinf(x)
- x が正または負の無限大の場合は、
True
を返し、それ以外の場合はFalse
を返します。
- math.isnan(x)
- x がNaN(数値ではない)の場合は
True
を返し、それ以外の場合はFalse
を返します。
- math.ldexp(x, i)
x * (2**i)
を返します。 これは本質的に関数 frexp()の逆です。
- math.modf(x)
- x の小数部と整数部を返します。 どちらの結果も x の符号が付いており、浮動小数点数です。
- math.trunc(x)
- Real 値 x を Integral (通常は整数)に切り捨てて返します。 x .__ trunc __()に委任します。
frexp()と modf()は、同等のCとは異なる呼び出し/戻りパターンを持っていることに注意してください。これらは、2番目の引数を返すのではなく、単一の引数を取り、値のペアを返します。 '出力パラメータ'を介して値を返します(Pythonにはそのようなものはありません)。
ceil()、 floor()、および modf()関数の場合、 all 浮動小数点数が十分に大きいことに注意してください。大きさは正確な整数です。 Pythonフロートは通常53ビット以下の精度(プラットフォームCダブルタイプと同じ)を持ちます。この場合、フロート x とabs(x) >= 2**52
は必ずしも小数ビットを持ちません。
9.2.2。 パワー関数と対数関数
- math.exp(x)
e**x
を返します。
- math.expm1(x)
e**x - 1
を返します。 小さなフロート x の場合、exp(x) - 1
で減算すると、精度が大幅に低下する可能性があります。 expm1()関数は、この量を完全な精度で計算する方法を提供します。>>> from math import exp, expm1 >>> exp(1e-5) - 1 # gives result accurate to 11 places 1.0000050000069649e-05 >>> expm1(1e-5) # result accurate to full precision 1.0000050000166668e-05
バージョン3.2の新機能。
- math.log(x[, base])
1つの引数を使用して、 x の自然対数を返します(ベース e に)。
2つの引数を使用して、 x の対数を
log(x)/log(base)
として計算された指定のベースに返します。
- math.log1p(x)
- 1 + x (ベース e )の自然対数を返します。 結果は、 x がゼロに近い場合に正確な方法で計算されます。
- math.log2(x)
x の2を底とする対数を返します。 これは通常、
log(x, 2)
よりも正確です。バージョン3.3の新機能。
も参照してください
int.bit_length()は、符号と先行ゼロを除いて、整数を2進数で表すために必要なビット数を返します。
- math.log10(x)
- x の10を底とする対数を返します。 これは通常、
log(x, 10)
よりも正確です。
- math.pow(x, y)
x
をy
の累乗に戻します。 例外的なケースは、可能な限りC99標準の付録「F」に従います。 特に、pow(1.0, x)
とpow(x, 0.0)
は、x
がゼロまたはNaNの場合でも、常に1.0
を返します。x
とy
の両方が有限であり、x
が負であり、y
が整数でない場合、pow(x, y)
は未定義であり、発生します。 ValueError 。組み込みの
**
演算子とは異なり、 math.pow()は両方の引数をタイプ float に変換します。**
または組み込みの pow()関数を使用して、正確な整数の累乗を計算します。
- math.sqrt(x)
- x の平方根を返します。
9.2.3。 三角関数
- math.acos(x)
- x のアークコサインをラジアンで返します。
- math.asin(x)
- x のアークサインをラジアンで返します。
- math.atan(x)
- x のアークタンジェントをラジアンで返します。
- math.atan2(y, x)
atan(y / x)
をラジアンで返します。 結果は-pi
とpi
の間にあります。 原点から点(x, y)
までの平面内のベクトルは、正のX軸とこの角度をなします。 atan2()のポイントは、両方の入力の符号がわかっているため、角度の正しい象限を計算できることです。 たとえば、atan(1)
とatan2(1, 1)
はどちらもpi/4
ですが、atan2(-1, -1)
は-3*pi/4
です。
- math.cos(x)
- x ラジアンの余弦を返します。
- math.hypot(x, y)
- ユークリッドノルム
sqrt(x*x + y*y)
を返します。 これは、原点から点(x, y)
までのベクトルの長さです。
- math.sin(x)
- x ラジアンの正弦を返します。
- math.tan(x)
- x ラジアンの接線を返します。
9.2.4。 角度変換
- math.degrees(x)
- 角度 x をラジアンから度に変換します。
- math.radians(x)
- 角度 x を度からラジアンに変換します。
9.2.5。 双曲線関数
双曲線関数は、円ではなく双曲線に基づく三角関数の類似体です。
- math.acosh(x)
- x の逆双曲線コサインを返します。
- math.asinh(x)
- x の逆双曲線正弦を返します。
- math.atanh(x)
- x の逆双曲線正接を返します。
- math.cosh(x)
- x の双曲線コサインを返します。
- math.sinh(x)
- x の双曲線正弦を返します。
- math.tanh(x)
- x の双曲線正接を返します。
9.2.6。 特殊機能
- math.erf(x)
エラー関数を x で返します。
erf()関数は、累積標準正規分布などの従来の統計関数を計算するために使用できます。
def phi(x): 'Cumulative distribution function for the standard normal distribution' return (1.0 + erf(x / sqrt(2.0))) / 2.0
バージョン3.2の新機能。
- math.erfc(x)
x で相補誤差関数を返します。 相補誤差関数は
1.0 - erf(x)
として定義されています。 これは、 x の大きな値に使用され、1から減算すると桁落ちが発生します。バージョン3.2の新機能。
- math.gamma(x)
ガンマ関数を x に返します。
バージョン3.2の新機能。
- math.lgamma(x)
x でのガンマ関数の絶対値の自然対数を返します。
バージョン3.2の新機能。
9.2.7。 定数
- math.pi
- 数学定数π= 3.141592…、利用可能な精度。
- math.e
- 数学定数e = 2.718281…、利用可能な精度。
- math.tau
数学定数τ= 6.283185…、利用可能な精度。 タウは、半径に対する円の円周の比率である2πに等しい円定数です。 タウの詳細については、ViHartのビデオ Pi is(still)Wrong をチェックし、2倍のパイを食べて Tau day を祝いましょう!
バージョン3.6の新機能。
- math.inf
浮動小数点の正の無限大。 (負の無限大の場合は、
-math.inf
を使用します。)float('inf')
の出力に相当します。バージョン3.5の新機能。
- math.nan
浮動小数点の「数値ではない」(NaN)値。
float('nan')
の出力に相当します。バージョン3.5の新機能。