파이썬 math 모듈 질문
조회수 560회
import math as m
#1번, 결과 값 : 1.0
print(m.sin(m.pi/2))
#2번 , 결과 값 -2. 4492935982947064e-16
print(m.tan(m.pi*2))
1번 처럼 하면 sin π/2
의 정확한 값이 나옵니다.
근데 왜 2번처럼 할 때는 tan 0
의 값이 아니라 근사값이 나오는 것인지 궁금합니다.
답변 감사합니다. 좋은 하루 되세요!
1 답변
-
- 단순한 답변 :
- 컴퓨터에서는 (사실 10진수 소수 표현으로도) pi 의 정확한 표현이 불가능합니다.
- 그래서
tan(pi)
의 정확한 값도 구할 수 없습니다. 근사값일 뿐입니다. - 하지만, 구해진 값은
-0.00000000000000024492935982947064
로 원하는 값이0
과 매우 가까운 값입니다.
- 그렇다면,
sin(pi/2)
는 왜 정확하게 구한걸까?- sin(pi/2) 도 어느정도의 오차를 가지고 구하게 될 것입니다.
- 이 때의 오차를
d(sin(x))
라고 하면, 그 식은d(sin(x)) = sin'(x) dx
(sin'(x)
는 사인함수의 미분함수,dx
는 계산지점의x
의 오차) 가 되고, 결국d(sin(x)) = cos(x) dx
가 됩니다. - 그리고, 값을 구하는 지점인
pi/2
에서의 코사인값은cos(pi/2) = 0
입니다. 따라서,dx
가 어느정도 있더라도,sin(pi/2)
값의 오차는 최소화되어서, 정확한 값이 나온 것으로 보입니다.
- 추가질문: 왜 미분을 사용하나?
y = sin(x) 라고 했을 때, 우리가 알고 싶은 것은 함수값의 오차인 Δy 입니다.
Δy 를 x 의 오차값인 Δx 와의 관계를 표현해보자면,
Δy/Δx 는 기울기이고, y' 이니까 Δy/Δx = (sin(x))' = cos(x)
식을 정리하면,
Δy = cos(x) Δx
- 단순한 답변 :
댓글 입력