Python에서 삼각 함수 계산(sin, cos, tan, arcsin, arccos, arctan)

사업

수학 함수에 대한 Python의 표준 모듈인 수학을 사용하여 삼각 함수(sin, cos, tan) 및 역삼각 함수(arcsin, arccos, arctan)를 계산할 수 있습니다.

다음 내용은 샘플 코드와 함께 여기에 설명되어 있습니다.

  • 파이(3.1415926..):math.pi
  • 각도 변환(라디안, 도):math.degrees(),math.radians()
  • 사인, 역 사인:math.sin(),math.asin()
  • 코사인, 역코사인:math.cos(),math.acos()
  • 탄젠트, 역 탄젠트:math.tan(),math.atan(),math.atan2()
  • 아래 차이점:math.atan(),math.atan2()

파이(3.1415926..):math.pi

Pi는 수학 모듈에서 상수로 제공됩니다. 다음과 같이 표현됩니다.
math.pi

import math

print(math.pi)
# 3.141592653589793

각도 변환(라디안, 도):math.degrees(),math.radians()

수학 모듈의 삼각 및 역 삼각 함수는 라디안을 각도 단위로 사용합니다.

Math.degrees() 및 math.radians()를 사용하여 라디안(호도 방식)과 도(도 방식) 간에 변환합니다.

Math.degrees()는 라디안에서 각도로 변환하고 math.radians()는 각도에서 라디안으로 변환합니다.

print(math.degrees(math.pi))
# 180.0

print(math.radians(180))
# 3.141592653589793

사인, 역 사인:math.sin(),math.asin()

사인(sin)을 찾는 함수는 math.sin()이고, 역 사인(arcsin)을 찾는 함수는 math.asin()입니다.

다음은 도를 라디안으로 변환하기 위해 math.radians()를 사용하여 30도의 사인을 찾는 예입니다.

sin30 = math.sin(math.radians(30))
print(sin30)
# 0.49999999999999994

30도의 사인은 0.5인데 무리수인 파이를 정확하게 계산할 수 없기 때문에 오차가 있습니다.

적절한 자릿수로 반올림하려면 round() 함수나 format() 메서드 또는 format() 함수를 사용하십시오.

round()의 반환 값은 숫자(int 또는 float)이지만 format()의 반환 값은 문자열입니다. 후속 계산에 사용하려면 round()를 사용하십시오.

print(round(sin30, 3))
print(type(round(sin30, 3)))
# 0.5
# <class 'float'>

print('{:.3}'.format(sin30))
print(type('{:.3}'.format(sin30)))
# 0.5
# <class 'str'>

print(format(sin30, '.3'))
print(type(format(sin30, '.3')))
# 0.5
# <class 'str'>

round() 함수는 두 번째 인수로 소수점 이하 자릿수를 지정합니다. 이것은 엄격하게 반올림되지 않습니다. 자세한 내용은 다음 문서를 참조하세요.

format() 메서드와 format() 함수는 서식 지정 문자열의 소수 자릿수를 지정합니다. 자세한 내용은 다음 문서를 참조하세요.

비교하고 싶다면 math.isclose()를 사용할 수도 있습니다.

print(math.isclose(sin30, 0.5))
# True

유사하게, 다음은 0.5의 역 사인을 찾는 예입니다. math.asin()은 math.degrees()를 사용하여 각도로 변환된 라디안을 반환합니다.

asin05 = math.degrees(math.asin(0.5))
print(asin05)
# 29.999999999999996

print(round(asin05, 3))
# 30.0

코사인, 역코사인:math.cos(),math.acos()

코사인(cos)을 구하는 함수는 math.cos(), 역코사인(arc cosine, arccos)을 구하는 함수는 math.acos()입니다.

다음은 60도의 코사인과 0.5의 역 코사인을 찾는 예입니다.

print(math.cos(math.radians(60)))
# 0.5000000000000001

print(math.degrees(math.acos(0.5)))
# 59.99999999999999

적절한 숫자로 반올림하려면 사인과 같이 round() 또는 format()을 사용할 수 있습니다.

탄젠트, 역 탄젠트:math.tan(),math.atan(),math.atan2()

탄젠트(tan)를 구하는 함수는 math.tan()이고, 역탄젠트(arctan)를 구하는 함수는 math.atan() 또는 math.atan2()입니다.
Math.atan2()는 나중에 설명합니다.

45도의 탄젠트와 1도의 역탄젠트를 구하는 예는 아래와 같습니다.

print(math.tan(math.radians(45)))
# 0.9999999999999999

print(math.degrees(math.atan(1)))
# 45.0

math.atan()과 math.atan2()의 차이점

math.atan()과 math.atan2()는 모두 역탄젠트를 반환하는 함수이지만 인수의 수와 반환 값의 범위가 다릅니다.

math.atan(x)에는 하나의 인수가 있고 arctan(x)을 라디안 단위로 반환합니다. 반환 값은 -pi \ 2와 pi \ 2(-90 ~ 90도) 사이입니다.

print(math.degrees(math.atan(0)))
# 0.0

print(math.degrees(math.atan(1)))
# 45.0

print(math.degrees(math.atan(-1)))
# -45.0

print(math.degrees(math.atan(math.inf)))
# 90.0

print(math.degrees(math.atan(-math.inf)))
# -90.0

위의 예에서 math.inf는 무한대를 나타냅니다.

math.atan2(y, x)에는 두 개의 인수가 있고 arctan(y \ x)을 라디안으로 반환합니다. 이 각도는 극좌표 평면에서 x축의 양의 방향으로 원점에서 좌표(x, y)까지의 벡터가 이루는 각도(편각)이며, 반환값은 -pi와 pi(-180 180도까지).

2사분면과 3사분면의 각도도 정확하게 구할 수 있으므로 극좌표 평면을 고려할 때 math.atan2()가 math.atan()보다 더 적합합니다.

인수의 순서는 x, y가 아니라 y, x입니다.

print(math.degrees(math.atan2(0, 1)))
# 0.0

print(math.degrees(math.atan2(1, 1)))
# 45.0

print(math.degrees(math.atan2(1, 0)))
# 90.0

print(math.degrees(math.atan2(1, -1)))
# 135.0

print(math.degrees(math.atan2(0, -1)))
# 180.0

print(math.degrees(math.atan2(-1, -1)))
# -135.0

print(math.degrees(math.atan2(-1, 0)))
# -90.0

print(math.degrees(math.atan2(-1, 1)))
# -45.0

위의 예와 같이 x축의 음의 방향(y는 0, x는 음)은 pi(180도)이지만 y가 음의 0이면 -pi(-180도)입니다. 표지판을 엄격하게 다루려면 조심하십시오.

print(math.degrees(math.atan2(-0.0, -1)))
# -180.0

음수 0은 다음 연산의 결과입니다.

print(-1 / math.inf)
# -0.0

print(-1.0 * 0.0)
# -0.0

정수는 음수 0으로 처리되지 않습니다.

print(-0.0)
# -0.0

print(-0)
# 0

x와 y가 모두 0인 경우에도 결과는 부호에 따라 다릅니다.

print(math.degrees(math.atan2(0.0, 0.0)))
# 0.0

print(math.degrees(math.atan2(-0.0, 0.0)))
# -0.0

print(math.degrees(math.atan2(-0.0, -0.0)))
# -180.0

print(math.degrees(math.atan2(0.0, -0.0)))
# 180.0

Math.atan2() 및 math.sin(), math.asin(), math.tan() 및 math.atan()과 같이 음수 0에 따라 결과의 부호가 변경되는 다른 예가 있습니다. .

print(math.sin(0.0))
# 0.0

print(math.sin(-0.0))
# -0.0

print(math.asin(0.0))
# 0.0

print(math.asin(-0.0))
# -0.0

print(math.tan(0.0))
# 0.0

print(math.tan(-0.0))
# -0.0

print(math.atan(0.0))
# 0.0

print(math.atan(-0.0))
# -0.0

print(math.atan2(0.0, 1.0))
# 0.0

print(math.atan2(-0.0, 1.0))
# -0.0

지금까지의 예제는 CPython에서 프로그램을 실행한 결과입니다. 다른 구현이나 환경에서는 음수 0을 다르게 처리할 수 있습니다.

Copied title and URL