6.1 math -- 数学関数

このモジュールはいつでも利用できます。標準 C で定義されている数学関数に アクセスすることができます。

これらの関数で複素数を使うことはできません。複素数に対応する必要がある ならば、 cmath モジュールにある同じ名前の関数を使ってくだ さい。ほとんどのユーザーは複素数を理解するのに必要なだけの数学を勉強し たくないので、複素数に対応した関数と対応していない関数の区別がされてい ます。これらの関数では複素数が利用できないため、引数に複素数を渡される と、複素数の結果が返えるのではなく例外が発生します。その結果、プログラ マは、そもそもどういった理由で例外がスローされたのかに早い段階で気づく 事ができます。6.1

このモジュールでは次の関数を提供しています。 明示的な注記のない限り、戻り値は全て浮動小数点数になります。

以下は整数論および数表現にまつわる関数です:

ceil( x)
x の天井値 (ceil)、すなわちx 以上の最も小さい整数を float型で返します。

fabs( x)
x の絶対値を返します。

floor( x)
x の床値 (floor)、すなわちx 以下の最も大きい整数を float型で返します。

fmod( x, y)
プラットフォームの C ライブラリで定義されている fmod(x, y) を返します。 Python の x % y という式は必ずしも同じ結果を 返さないということに注意してください。 C 標準の要求では、fmod は除算の結果が x と同じ符号に なり、大きさがabs(y) より小さくなるような整数 n に ついてはfmod(x, y) が厳密に (数学的に、つまり限りなく高い精度で) x - n*y と等価であるよう求めています。 Python の x % y は、y と同じ符号の結果を 返し、浮動小数点の引数に対して厳密な解を出せないことがあります。 例えば、 fmod(-1e-100, 1e100)-1e-100 ですが、 Python の-1e-100 % 1e1001e100-1e-100 になり、 浮動小数点型で厳密に表現できず、ややこしいことに1e100 に 丸められます。このため、一般には浮動小数点の場合には関数 fmod()、 整数の場合にはx % y を使う方がよいでしょう。

frexp( x)
x の仮数と指数を (m, e)のペアとして返します。 mはfloat型で、eは厳密にx == m * 2**e であるような整数型です。 x がゼロの場合は、 (0.0, 0)を返し、それ以外の場合は、 0.5 <= abs(m) < 1 を返します。これは浮動小数点型の内部表現 を可搬性を保ったまま "分解する (pick apart)" するためです。

ldexp( x, i)
x * (2**i) を返します。

modf( x)
xの小数部分と整数部分を返します。 両方の結果は xの符号を受け継ぎます。 整数部はfloat型で返されます。

frexp()modf() は C のものとは異なった呼び出し/返し パターンを持っていることに注意してください。引数を1つだけ受け取り、1組のペアに なった値を返すので、2つ目の戻り値を `出力用の引数' 経由で返したりはしません (Python には出力用の引数はありません)。

ceil()floor()、およびmodf() 関数に ついては、非常に大きな浮動小数点数が全て 整数そのものになるという ことに注意してください。通常、Python の浮動小数点型は 53 ビット以上の 精度をもたない (プラットフォームにおける C double 型と同じ) ので、 結果的にabs(x) >= 2**52 であるような浮動小数点型x は 小数部分を持たなくなるのです。

以下は指数および対数関数です:

exp( x)
e**x を返します。

log( x[, base])
x の自然対数を返します。 base を底とした x の対数を返します。base を省略した場合 x の自然対数を返します。 バージョン 2.3 で 変更 された仕様: base argument added

log10( x)
x の10を底とした対数を返します。

pow( x, y)
x**yを返します。

sqrt( x)
x の平方根を返します。

以下は三角関数です:

acos( x)
x の逆余弦を返します。

asin( x)
x の逆正弦を返します。

atan( x)
x 逆正接を返します。

atan2( y, x)
atan(y / x) の逆正接をラジアンで返します。 戻り値は -pi から pi の間になります。この角度は、 極座標平面において原点から (x, y) へのベクトル が X 軸の正の方向となす角です。atan2() のポイントは、 入力 x, y の両方の符号が既知であるために、位相角の 正しい象限を計算できることにあります。例えば、atan(1)atan2(1,1) はいずれも pi/4 ですが、atan2(-1, -1)-3*pi/4 になります。

cos( x)
x の余弦を返します。

hypot( x, y)
ユークリッド距離(sqrt(x*x + y*y))を返します。

sin( x)
xの正弦を返します。

tan( x)
x の正接を返します。

以下は角度に関する関数です:

degrees( x)
x をラジアンから度数に変換します。

radians( x)
x を度数からラジアンに変換します。

以下は双曲線関数です:

cosh( x)
x の双曲線余弦を返します。

sinh( x)
xの双曲線正弦を返します。

tanh( x)
x の双曲線正接を返します。

このモジュールでは以下の 2つの数学定数も定義しています:

pi
数学定数 pi

e
数学定数 e

注意: math モジュールは、ほとんどが実行プラットフォームにおける C 言語の数学ライブラリ関数に対する薄いラッパでできています。 例外的な場合での挙動は、 C 言語標準ではおおさっぱにしか定義されておらず、 さらに Python は数学関数におけるエラー報告機能の挙動をプラットフォームの C 実装から受け継いでいます。その結果として、エラーの際 (およびなんらか の引数がとにかく例外的であると考えられる場合) に送出される特定の例外に ついては、プラットフォーム間やリリースバージョン間を通じて有意なものと なっていません。例えば、 math.log(0)-Inf を返すか ValueError または OverflowError を送出するかは不定であり、 math.log(0)OverflowError を送出する場合において math.log(0L)ValueError を送出するときもあります。

参考:

cmath:モジュール
これらの多くの関数の複素数版。.


脚注

... 事ができます。6.1
訳注:例外が発生しないで、計算結果が返えってし まうと、計算結果がおかしい事から、原因が複素数を渡したせいである事に プログラマが気づくのがおくれる可能性があります。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。