Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 math 모듈 완벽 정리: 수학 함수 활용 가이드

파이썬에서 math 모듈은 다양한 수학 함수를 사용할 수 있도록 지원하는 표준 라이브러리입니다. 이 모듈의 모든 함수는 정수(int) 또는 실수(float) 타입 객체에만 적용할 수 있으며, 복소수(complex)에는 사용할 수 없습니다.

math 모듈을 사용하려면 먼저 코드 상단에 모듈을 임포트해야 합니다.

import math

주요 상수(Constants)

math 모듈은 복잡한 계산에 바로 활용할 수 있는 여러 수학 상수를 제공합니다.

번호 상수 & 설명
1

pi

원주율 π의 값을 반환합니다. 약 3.141592

2

E

자연상수 e의 값을 반환합니다. 약 2.718281

3

tau

타우(tau)의 값을 반환합니다. tau = 6.283185 (즉, 2π)

4

inf

무한대(infinity)를 나타내는 값입니다.

5

nan

숫자가 아님(Not a Number)을 의미하는 특수한 값입니다.

숫자 및 수치 표현 함수

아래 함수들은 숫자를 다양한 방식으로 변환하고 검증하는 데 사용됩니다. 주요 메서드는 다음과 같습니다.

번호 함수 & 설명
1

ceil(x)

x보다 크거나 같은 가장 작은 정수(올림 값)를 반환합니다.

2

copysign(x, y)

y의 부호를 x에 복사하여 반환합니다.

3

fabs(x)

x의 절댓값을 반환합니다.

4

factorial(x)

x의 팩토리얼(x!)을 반환합니다. 단, x ≥ 0이어야 합니다.

5

floor(x)

x보다 작거나 같은 가장 큰 정수(내림 값)를 반환합니다.

6

fsum(iterable)

반복 가능한(iterable) 객체의 모든 요소를 더한 합계를 부동소수점 오차 없이 정확하게 계산합니다.

7

gcd(x, y)

x와 y의 최대공약수(GCD)를 반환합니다.

8

isfinite(x)

x가 무한대도 아니고 NaN도 아닌지 확인합니다.

9

isinf(x)

x가 무한대인지 확인합니다.

10

isnan(x)

x가 숫자가 아닌지(NaN) 확인합니다.

11

remainder(x, y)

x를 y로 나눈 나머지를 IEEE 754 방식으로 반환합니다.

예제 코드

import math
print('23.56의 올림 값과 내림 값: ' + str(math.ceil(23.56)) + ', ' + str(math.floor(23.56)))
x = 10
y = -15
print('y의 부호를 x에 복사한 값: ' + str(math.copysign(x, y)))
print('-96과 56의 절댓값: ' + str(math.fabs(-96)) + ', ' + str(math.fabs(56)))
my_list = [12, 4.25, 89, 3.02, -65.23, -7.2, 6.3]
print('리스트 요소들의 합: ' + str(math.fsum(my_list)))
print('24와 56의 최대공약수(GCD): ' + str(math.gcd(24, 56)))
x = float('nan')
if math.isnan(x):
    print('숫자가 아닙니다')
x = float('inf')
y = 45
if math.isinf(x):
    print('무한대입니다')
print(math.isfinite(x)) # x는 유한한 수가 아님
print(math.isfinite(y)) # y는 유한한 수임

실행 결과

23.56의 올림 값과 내림 값: 24, 23
y의 부호를 x에 복사한 값: -10.0
-96과 56의 절댓값: 96.0, 56.0
리스트 요소들의 합: 42.13999999999999
24와 56의 최대공약수(GCD): 8
숫자가 아닙니다
무한대입니다
False
True

참고로 일반적인 sum() 대신 fsum()을 사용하면 부동소수점 연산 오차를 줄여 더 정확한 결과를 얻을 수 있습니다.

거듭제곱 및 로그 함수

아래 함수들은 거듭제곱과 로그 관련 계산을 수행하는 데 사용됩니다.

번호 함수 & 설명
1

pow(x, y)

x의 y제곱(x^y) 값을 반환합니다.

2

sqrt(x)

x의 제곱근을 구합니다.

3

exp(x)

e의 x제곱(e^x) 값을 구합니다. 여기서 e ≈ 2.718281

4

log(x[, base])

지정한 밑(base)을 기준으로 한 로그 값을 반환합니다. 밑을 생략하면 기본값은 자연상수 e입니다.

5

log2(x)

밑이 2인 로그 값을 반환합니다.

6

log10(x)

밑이 10인 로그 값을 반환합니다.

예제 코드

import math
print('5^8의 값: ' + str(math.pow(5, 8)))
print('400의 제곱근: ' + str(math.sqrt(400)))
print('e^5의 값: ' + str(math.exp(5)))
print('밑이 5인 Log(625)의 값: ' + str(math.log(625, 5)))
print('밑이 2인 Log(1024)의 값: ' + str(math.log2(1024)))
print('밑이 10인 Log(1024)의 값: ' + str(math.log10(1024)))

실행 결과

5^8의 값: 390625.0
400의 제곱근: 20.0
e^5의 값: 148.4131591025766
밑이 5인 Log(625)의 값: 4.0
밑이 2인 Log(1024)의 값: 10.0
밑이 10인 Log(1024)의 값: 3.010299956639812

삼각함수 및 각도 변환 함수

아래 함수들은 다양한 삼각 연산을 수행하는 데 사용됩니다. 삼각함수의 인자는 라디안(radian) 단위라는 점에 유의하세요.

번호 함수 & 설명
1

sin(x)

x(라디안)의 사인(sine) 값을 반환합니다.

2

cos(x)

x(라디안)의 코사인(cosine) 값을 반환합니다.

3

tan(x)

x(라디안)의 탄젠트(tangent) 값을 반환합니다.

4

asin(x)

사인의 역함수(아크사인)입니다. acos, atan 역시 동일한 방식으로 제공됩니다.

5

degrees(x)

라디안 단위의 각도 x를 도(degree) 단위로 변환합니다.

6

radians(x)

도(degree) 단위의 각도 x를 라디안 단위로 변환합니다.

예제 코드

import math
print('Sin(60도)의 값: ' + str(math.sin(math.radians(60))))
print('cos(pi)의 값: ' + str(math.cos(math.pi)))
print('tan(90도)의 값: ' + str(math.tan(math.pi/2)))
print('sin(0.8660254037844386)의 각도: ' + str(math.degrees(math.asin(0.8660254037844386))))

실행 결과

Sin(60도)의 값: 0.8660254037844386
cos(pi)의 값: -1.0
tan(90도)의 값: 1.633123935319537e+16
sin(0.8660254037844386)의 각도: 59.99999999999999

tan(90°)의 결과가 매우 큰 값으로 출력되는 이유는 파이썬이 π/2를 근사적으로 표현하기 때문입니다. 수학적으로는 90도에서 탄젠트가 무한대가 되어야 하지만, 부동소수점 연산의 한계로 인해 아주 큰 유한한 값이 반환됩니다. 마찬가지로 asin()의 역변환 결과가 60도가 아닌 59.99999999999999로 나오는 것도 같은 원리입니다.