math 패키지
고급 수학 함수나 과학 관련 함수가 필요할 때 사용하는 패키지입니다. 파이썬이 설치될 때 같이 설치되어 따로 설치할 필요 없이 바로 사용 가능합니다. pi나 e 같은 특수한 상수 값도 제공합니다.
math 패키지 카테고리
- 삼각함수 : sin, cos, tan 등 기본 삼각함수
- 역삼각함수 : asin, acos, atan 등 역삼각 함수
- 하이퍼 삼각함수(쌍곡선) : sinh, cosh, tanh와 asinh 등 쌍곡선 형태의 삼각함수
- 각도와 라디안 : 흔히 쓰는 각도(º)와 π 같은 라디안 값으로의 변환 각도가 친근할 수 있으나 삼각함수에서는 라디안 값을 사용하므로 라디안으로 변환이 필수적임
- 로그 : 밑이 2와 10, e 등의 로그를 지원
- 정수 변환 및 기타 : floor와 ceil 같은 정수 변환 제공
- 상수 : 정밀한 계산된 pi나 e 같은 상수 값 제공
삼각함수의 사용
삼각함수의 기본 이해
삼각함수의 계산은 직각삼각형을 기준으로 계산합니다. 직각삼각형에서 각도 $θ$ 값에 따라
$sinθ=\frac {c} {a}$
$cosθ=\frac {b} {a}$
$tanθ=\frac {c} {b}$
보통의 실제 컴퓨터에서는 sin cos tan 계산기가 아닌 근사 다항식인 테일러급수를 통해 계산합니다.
빗변의 길이가 5이고 $θ$ 각도가 30 º 일 때 c를 구하는 코드입니다. 계산식은 $c=\frac {a} {sin30 º}$이므로 다음과 같이 코드를 작성합니다.
import math
a=5
angle=math.radians(30)
print('c={:.2f}'.format(math.sin(angle)*a))
역삼각 함수
삼각함수의 역함수입니다. 다음과 같은 식이 성립합니다.
$asin\frac {c} {a}=θ$
$acos\frac {b} {a}=θ$
$atan\frac {c} {b}=θ$
import math
a=5
c=2.5
angle=math.asin(c/a)
print('radians={:.6f}'.format(angle))
print('degrees={:.6f}'.format(math.degrees(angle)))
이전과 같은 직각삼각형을 이용한 역함수 구하는 코드입니다. 각도의 값을 구하기 위한 식입니다.
로그함수
math 패키지에서는 상용로그, 자연로그, 이진 로그를 제공하며 기타 밑이 다른 로그도 사용 가능합니다.
log10(x) 밑이 10인 상용로그
log2(x) 밑이 2인 이진 로그
log(x, base=e) 밑이 e 혹은 base 값인 로그, 기본값은 e인 자연로그
기본적으로 log(x)는 자연로그입니다.
import math
math.log10(5)#
math.log2(5)#
math.log(2)#
정수 변환
올림 혹은 내림하는 함수
ceil(a) 올림 함수
floor(a) 내림 함수
import math
print(math.ceil(-2.5))
print(math.ceil(3.1))
print(math.floor(-2.5))
print(math.ceil(3.1))
math 모듈에 있는 유용한 함수들
- math.factorial(a) : 팩토리얼 함수 1부터 a까지의 모든 정수를 곱한 수 예를 들어 factorial(4)는 24
- math. sqrt(a) : 제곱근 계산
- math.pow(a) : a의 제곱 계산
- math.trunc(f) : 소수점을 자르는 함수 0으로 가는 내림이라고 할 수 있으나 정확히는 잘라 정수로 변환하는 것이다. truncate의 약자입니다.
- math.gcd(a, b) : 입력받은 두 수의 최대공약수를 구합니다.
- math.radians(t) : 각도를 라디안 값으로 변환합니다.
- math.degrees(t) : 라디안 값을 각도로 변환합니다.
- math.fabs(x) : x의 절댓값을 반환합니다. 내장된 abs와 달리 실수도 가능합니다.
- math.exp(x) : $e^{x}$을 나타냅니다.
'Programming > Python' 카테고리의 다른 글
파이썬 eval() exec()함수와 취약점 발생 가능성 (2) | 2022.08.31 |
---|---|
파이썬 random 패키지 (0) | 2021.10.31 |
파이썬 바이너리 파일 입출력 struct와 pickle (0) | 2021.09.25 |
파이썬 파일 입출력과 포인터 사용하기 (0) | 2021.09.18 |
파이썬 format 메서드 다양한 포매팅을 돕는 메서드 (0) | 2021.08.22 |
댓글