Rumah >pembangunan bahagian belakang >C++ >Mengapakah Hasil Fungsi C/C Sin dan cos Saya Tidak Tepat untuk Sudut Diketahui?

Mengapakah Hasil Fungsi C/C Sin dan cos Saya Tidak Tepat untuk Sudut Diketahui?

Susan Sarandon
Susan Sarandonasal
2024-12-02 16:33:11442semak imbas

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

Keputusan Tidak Dijangka daripada dosa dan kos Fungsi untuk Sudut Diketahui

Apabila berurusan dengan fungsi trigonometri seperti sin dan cos dalam C/C , ia adalah penting untuk memahami keperluan input mereka. Kesalahpahaman biasa ialah mengandaikan bahawa fungsi ini mengharapkan sudut dalam darjah. Walau bagaimanapun, fungsi C/C sin dan cos memerlukan sudut inputnya dalam radian.

Untuk menggambarkan ini, mari kita pertimbangkan contoh yang diberikan di mana sudut 180 darjah dihantar kepada sin dan cos. Hasil yang dijangka, berdasarkan identiti trigonometri, ialah:

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

Walau bagaimanapun , keputusan yang dilaporkan menyimpang ketara:

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

Degree to the discrep () fungsi, bukannya melaksanakan penukaran yang tepat, memberikan hasil anggaran disebabkan pembundaran dan ketepatan terhingga bagi dua kali ganda. Selain itu, M_PI pemalar yang mewakili π ialah anggaran yang hampir, tetapi tidak tepat.

Untuk meningkatkan ketepatan pengiraan trigonometri, adalah disyorkan untuk melakukan pengurangan hujah dalam darjah sebelum menggunakan sin atau cos. Proses ini memastikan bahawa sudut dikurangkan kepada julat -45° hingga 45° sebelum menghantarnya kepada fungsi trigonometri.

Contoh kod yang disediakan menunjukkan teknik ini, mengurangkan sudut kepada julat tertentu dan kemudian memanggil fungsi 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;
}

Pendekatan ini menghasilkan keputusan yang lebih tepat untuk pengiraan trigonometri, terutamanya untuk sudut berhampiran sudut yang terkenal seperti 90°, 180°, dsb.

Atas ialah kandungan terperinci Mengapakah Hasil Fungsi C/C Sin dan cos Saya Tidak Tepat untuk Sudut Diketahui?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn