알고 있는 각도에 대한 sin 및 cos 함수의 예기치 않은 결과
C/C에서 sin 및 cos와 같은 삼각 함수를 다룰 때 이것이 중요합니다. 입력 요구 사항을 이해합니다. 일반적인 오해는 이러한 함수가 각도(도)를 예상한다고 가정하는 것입니다. 그러나 C/C sin 및 cos 함수에서는 입력 각도가 라디안 단위여야 합니다.
이를 설명하기 위해 180도 각도가 sin 및 cos에 전달되는 예제를 고려해 보겠습니다. 삼각법 항등식을 기반으로 한 예상 결과는 다음과 같습니다.
그러나 , 보고된 결과가 벗어남 크게:
DegreesToRadians 때문에 불일치가 발생합니다. () 함수는 정확한 변환을 수행하는 대신 반올림 및 double의 유한 정밀도로 인해 대략적인 결과를 제공합니다. 또한 π를 나타내는 상수 M_PI는 가깝지만 정확하지는 않은 근사치입니다.
삼각법 계산의 정확성을 높이려면 sin 또는 cos를 호출하기 전에 각도 단위로 인수 감소를 수행하는 것이 좋습니다. 이 프로세스는 각도를 삼각 함수에 전달하기 전에 각도를 -45° ~ 45° 범위로 줄입니다.
제공된 코드 예제는 각도를 지정된 범위로 줄인 다음 sin 함수.
extern double sind(double x) { // ... switch (quo % 4) { case 0: // Use * 1.0 to avoid -0.0 return sin(d2r(x90)* 1.0); case 1: return cos(d2r(x90)); case 2: return sin(d2r(-x90) * 1.0); case 3: return -cos(d2r(x90)); } return 0.0; }
이 접근 방식은 삼각법 계산, 특히 90°와 같이 잘 알려진 각도에 가까운 각도에 대해 더 정확한 결과를 제공합니다. 180° 등
위 내용은 내 C/C sin 및 cos 함수 결과가 알려진 각도에 대해 부정확한 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!