> 백엔드 개발 > C++ > 내 C/C sin 및 cos 함수 결과가 알려진 각도에 대해 부정확한 이유는 무엇입니까?

내 C/C sin 및 cos 함수 결과가 알려진 각도에 대해 부정확한 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-02 16:33:11
원래의
448명이 탐색했습니다.

Why Are My C/C   sin and cos Function Results Inaccurate for Known Angles?

알고 있는 각도에 대한 sin 및 cos 함수의 예기치 않은 결과

C/C에서 sin 및 cos와 같은 삼각 함수를 다룰 때 이것이 중요합니다. 입력 요구 사항을 이해합니다. 일반적인 오해는 이러한 함수가 각도(도)를 예상한다고 가정하는 것입니다. 그러나 C/C sin 및 cos 함수에서는 입력 각도가 라디안 단위여야 합니다.

이를 설명하기 위해 180도 각도가 sin 및 cos에 전달되는 예제를 고려해 보겠습니다. 삼각법 항등식을 기반으로 한 예상 결과는 다음과 같습니다.

  • sin(180°) = 0.0547
  • cos(180°) = 0.99

그러나 , 보고된 결과가 벗어남 크게:

  • sin(180°) = 3.5897934739308216e-009
  • cos(180°) = -1.00000

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿