ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/Python

[Python] math ๋ชจ๋“ˆ ํ•จ์ˆ˜

NaNaRin๐Ÿ™ƒ 2021. 2. 10. 23:00

docs.python.org/3/library/math.html#module-math

 

math — Mathematical functions — Python 3.9.1 documentation

math — Mathematical functions This module provides access to the mathematical functions defined by the C standard. These functions cannot be used with complex numbers; use the functions of the same name from the cmath module if you require support for co

docs.python.org


1. ์ƒ์ˆ˜

2. ์‹ค์ˆ˜ ์ฒ˜๋ฆฌ

3. iterable ์ฒ˜๋ฆฌ

4. ์ •์ˆ˜๋ก 

5. ๋ฌดํ•œ๋Œ€/NaN

6. ์‚ผ๊ฐํ•จ์ˆ˜

7. ์ง€์ˆ˜/๋กœ๊ทธํ•จ์ˆ˜

8. ๊ฐ๋„ ๋ณ€ํ™˜

9. ํ™•๋ฅ ๊ณผ ํ†ต๊ณ„


math ๋ชจ๋“ˆ์€ ๋‚ด์žฅํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— import๊ฐ€ ํ•„์š”ํ•˜๋‹ค

import math

1. ์ƒ์ˆ˜

print(math.pi)      # 3.141592653589793
print(math.e)       # 2.718281828459045
print(math.tau)     # 6.283185307179586
print(math.inf)     # inf
print(math.nan)     # nan

2. ์‹ค์ˆ˜ ์ฒ˜๋ฆฌ

 

- math.ceil(x)

 : ์˜ฌ๋ฆผ. x์˜ ์ฒœ์žฅ๊ฐ’(ceiling)์„ ๋ฐ˜ํ™˜

x = 3.14
print(math.ceil(x))
# 4

 

- math.fabs(x)

 : x์˜ ์ ˆ๋Œ“๊ฐ’ ๋ฐ˜ํ™˜. = abs()

y = -2.1
print(math.fabs(y))
# 2.1
print(abs(y))
# 2.1

 

- math.floor(x)

 : ๋‚ด๋ฆผ. x์˜ ๋ฐ”๋‹ฅ๊ฐ’(floor)์„ ๋ฐ˜ํ™˜

x = 3.14
print(math.floor(x))
# 3

 

- math.fmod(x, y)

 : x % y ์™€ ๊ฐ™์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ๋ณดํ†ต x % y ๋Š” ์ •์ˆ˜, fmod(x, y)๋Š” float ๊ณ„์‚ฐ ์‹œ ์‚ฌ์šฉ

x = 3.14
y = -2.1
print(math.fmod(x, y))
# 1.04

 

- math.modf(x)

 : x์˜ ์†Œ์ˆ˜์™€ ์ •์ˆ˜ ๋ถ€๋ถ„์„ ํŠœํ”Œ๋กœ ๋ฐ˜ํ™˜

x = 3.14
z = math.modf(x)
print(z)
# (0.14000000000000012, 3.0)

3. iterable ์ฒ˜๋ฆฌ

 

- math.fsum(iterable)

 : sum(iterable)๊ณผ ๊ฐ™์ด ์ „๋‹ฌ๋œ iterable์˜ ๋ชจ๋“  ์š”์†Œ์˜ ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ sum()๊ณผ ๋‹ฌ๋ฆฌ ์ •๋ฐ€๋„ ์†์‹ค ๋ฐฉ์ง€

a = [1, 4, 7, 4, 3, 1.4]
b = (1, 4, 7, 4, 3, 1.4)
print(math.fsum(a))
# 20.4
print(math.fsum(b))
# 20.4

 

- math.prod(iterable, *, start=1)

 : ์ „๋‹ฌ๋œ iterable ์˜ ๋ชจ๋“  ์š”์†Œ์˜ ๊ณฑ์„ ๋ฐ˜ํ™˜. ๊ธฐ๋ณธ start๊ฐ’์€ 1. iterable์ด ๋น„์–ด์žˆ์œผ๋ฉด start๊ฐ’์„ ๋ฐ˜ํ™˜

a = [1, 4, 7, 4, 3, 1.4]
b = (1, 4, 7, 4, 3, 1.4)
print(math.prod(a))
# 470.4
print(math.prod(b, start=2))
# 940.8

4. ์ •์ˆ˜๋ก 

 

- math.gcd(*integers)

 : ์ „๋‹ฌ๋œ ์ •์ˆ˜ ์ธ์ž๋“ค์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜ ๋ฐ˜ํ™˜. ์ธ์ž๊ฐ€ ์ „๋‹ฌ๋˜์ง€ ์•Š์œผ๋ฉด 0 ๋ฐ˜ํ™˜

a = 12
b = 24
c = 30
print(math.gcd())
# 0
print(math.gcd(a, b))
# 12
print(math.gcd(a, b, c))
# 6

 

- math.lcm(*integers)

 : ์ „๋‹ฌ๋œ ์ •์ˆ˜ ์ธ์ž๋“ค์˜ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜ ๋ฐ˜ํ™˜. ์ธ์ž๊ฐ€ ์ „๋‹ฌ๋˜์ง€ ์•Š์œผ๋ฉด 1 ๋ฐ˜ํ™˜

a = 2
b = 3
c = 7
print(math.lcm())
# 1
print(math.lcm(a, b))
# 6
print(math.lcm(a, b, c))
# 42

5. ๋ฌดํ•œ๋Œ€/NaN

 

- math.isfinite(x)

 : x๊ฐ€ ๋ฌดํ•œ๋Œ€๋‚˜ NaN์ด ์•„๋‹ˆ๋ฉด True, ๋งž์œผ๋ฉด False ๋ฐ˜ํ™˜.

 

- math.isinf(x)

 : x๊ฐ€ ์–‘ ๋˜๋Š” ์Œ์˜ ๋ฌดํ•œ๋Œ€์ด๋ฉด True, ์•„๋‹ˆ๋ฉด False ๋ฐ˜ํ™˜

 

- math.isnan(x)

 : x๊ฐ€ NaN์ด๋ฉด True, ์•„๋‹ˆ๋ฉด False ๋ฐ˜ํ™˜


6. ์‚ผ๊ฐํ•จ์ˆ˜

 

- math.acos(x)

 : x ๋ผ๋””์•ˆ์˜ ์•„ํฌ ์ฝ”์‚ฌ์ธ(arc cosine) ๋ฐ˜ํ™˜

 

- math.asin(x)

 : x ๋ผ๋””์•ˆ์˜ ์•„ํฌ ์‚ฌ์ธ(arc sine) ๋ฐ˜ํ™˜

 

- math.atan(x)

 : x ๋ผ๋””์•ˆ์˜ ์•„ํฌ ํƒ„์  ํŠธ(arc tangent) ๋ฐ˜ํ™˜

 

- math.cos(x)

 : x ๋ผ๋””์•ˆ์˜ ์ฝ”์‚ฌ์ธ(cosine) ๋ฐ˜ํ™˜

 

- math.sin(x)

 : x ๋ผ๋””์•ˆ์˜ ์‚ฌ์ธ(sine) ๋ฐ˜ํ™˜

 

- math.sin(x)

 : x ๋ผ๋””์•ˆ์˜ ํƒ„์  ํŠธ(tangent) ๋ฐ˜ํ™˜


7. ์ง€์ˆ˜/๋กœ๊ทธํ•จ์ˆ˜

 

- math.exp(x)

 : e์˜ x ๊ฑฐ๋“ญ์ œ๊ณฑ ๋ฐ˜ํ™˜. ์ผ๋ฐ˜์ ์œผ๋กœ math.e ** x ๋‚˜ pow(math.e, x) ๋ณด๋‹ค ์ •ํ™•ํ•˜๋‹ค

a = 2
print(math.exp(a))
# 7.38905609893065

 

- math.isqrt(x)

 : ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜ x์˜ ์ •์ˆ˜ ์ œ๊ณฑ๊ทผ ๋ฐ˜ํ™˜. x์˜ ์ •ํ™•ํ•œ ์ œ๊ณฑ๊ทผ์˜ ๋ฒ„๋ฆผ๊ฐ’

a = 15
print(math.isqrt(a))
# 3

 

- math.log(x[, base])

 : ์ธ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์ „๋‹ฌ๋˜๋ฉด x์˜ ์ž์—ฐ๋กœ๊ทธ ๋ฐ˜ํ™˜(๋ฐ‘ e). ์ธ์ˆ˜๊ฐ€ ๋‘๊ฐœ ์ „๋‹ฌ๋˜๋ฉด ๋ฐ‘์ด base์ธ x์˜ ๋กœ๊ทธ ๋ฐ˜ํ™˜( log(x) / log(base) )

 

- math.log2(x)

 : x์˜ ๋ฐ‘์ด 2์ธ ๋กœ๊ทธ ๋ฐ˜ํ™˜. ์ผ๋ฐ˜์ ์œผ๋กœ log(x, 2)๋ณด๋‹ค ์ •ํ™•ํ•˜๋‹ค

 

- math.log10(x)

 : x์˜ ๋ฐ‘์ด 10์ธ ๋กœ๊ทธ ๋ฐ˜ํ™˜. ์ผ๋ฐ˜์ ์œผ๋กœ log(x, 10)๋ณด๋‹ค ์ •ํ™•ํ•˜๋‹ค

 

- math.pow(x, y)

 : x์˜ y ์ œ๊ณฑ ๋ฐ˜ํ™˜. x ** y ์™€ ๋‹ฌ๋ฆฌ ๋‘ ์ธ์ž๋ฅผ ๋ชจ๋‘ floatํ˜•์œผ๋กœ ๋ณ€ํ™˜

a = 2
b = 3
print(math.pow(a, b))
# 8.0

 

- math.sqrt(x)

 : x์˜ ์ œ๊ณฑ๊ทผ ๋ฐ˜ํ™˜

a = 15
print(math.sqrt(a))
# 3.872983346207417

8. ๊ฐ๋„ ๋ณ€ํ™˜

 

- math.degrees(x)

 : ๊ฐ๋„ x๋ฅผ ๋ผ๋””์•ˆ(radian)์—์„œ ๋„(degree)๋กœ ๋ณ€ํ™˜

 

- math.radians(x)

 : ๊ฐ๋„ x๋ฅผ ๋„(degree)์—์„œ ๋ผ๋””์•ˆ(radian)์œผ๋กœ ๋ณ€ํ™˜


9. ํ™•๋ฅ ๊ณผ ํ†ต๊ณ„

 

- math.comb(n, k)

 : ๋ฐ˜๋ณต๊ณผ ์ˆœ์„œ ์—†์ด n๊ฐœ ์ค‘ k๊ฐœ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ ๋ฐ˜ํ™˜. ์กฐํ•ฉ nCr : n! / (k! * (n - k)!)

 

- math.factorial(x)

 : x! ๋ฐ˜ํ™˜. x์˜ ํŒฉํ† ๋ฆฌ์–ผ ๋ฐ˜ํ™˜

 

- math.perm(n, k=None)

 : ๋ฐ˜๋ณต ์—†๊ณ  ์ˆœ์„œ ์žˆ๊ฒŒ n๊ฐœ ์ค‘ k๊ฐœ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ ๋ฐ˜ํ™˜. ์ˆœ์—ด nPr : n! / (n - k)!