C भाषा sin फलनको पूर्ण विश्लेषण | रेडियन रूपान्तरण र कस्टम कार्यान्वयन

1. C भाषा मा sin फलनको आधारभूत

C भाषामा, मानक पुस्तकालय「math.h」प्रयोग गरेर त्रिकोणात्मक फलनको गणना सम्भव हुन्छ। विशेष गरी「sin फलन」को प्रयोग कोणको साइन(साइन)प्राप्त गर्न गरिन्छ। यस लेखमा, C भाषामा sin फलनको प्रयोग, यसको अनुप्रयोग, र थप स्वनिर्मित sin फलनको कार्यान्वयन विधि बारे विस्तृत रूपमा व्याख्या गरिन्छ।

1.1 sin फलन के हो?

sin फलनले कोणलाई रेडियन इकाइमा लिन्छ र त्यसको साइन मान फिर्ता गर्छ। रेडियन भनेको, कोणलाई π (पाइ) को आधारमा बनाइएको इकाइ हो, जसलाई डिग्रीमा रूपान्तरण गर्न परिवर्तन आवश्यक पर्छ।

2. C भाषा को math.h लाइब्रेरीको मूलभूत

त्रिकोणात्मक फलनहरू प्रयोग गर्नको लागिmath.hलाई इन्क्लुड गर्नुहोस्। यसले sin फलन र अन्य गणितीय फलनहरू प्रयोग गर्न सकिन्छ।

#include <stdio.h>
#include <math.h>

int main() {
    double angle = 1.57; // ९० डिग्रीको बराबरको रेडियन
    double result = sin(angle);
    printf("sin(1.57) = %fn", result);
    return 0;
}

यो कोडमा, 90 डिग्री (रेडियनमा 1.57) को साइन मान 1.000000 को रूपमा आउटपुट हुन्छ।

2.1 डिग्री र रेडियनको रूपान्तरण

डिग्रीलाई रेडियनमा रूपान्तरण गर्न तलको सूत्र प्रयोग गर्नुहोस्।

#define DEG_TO_RAD(deg)  ((deg) / 180.0 * 3.141592653589793)

int main(void) {
    double deg = 90.0;
    double rad = DEG_TO_RAD(deg);
    printf("sin(%f डिग्री) = %fn", deg, sin(rad));
    return 0;
}

यो प्रोग्राममा, 90 डिग्रीलाई रेडियनमा रूपान्तरण गरी, त्यस मानलाई प्रयोग गरेर sin फलन चलाइन्छ।

3. अनुप्रयोग उदाहरण: साइन वेभको निर्माण

साइन वेभ ध्वनि संश्लेषण र संकेत प्रक्रिया मा प्रायः प्रयोग हुने तरंग रूप हो। तलको कोडमा, साइन वेभलाई निर्माण गरी प्रत्येक नमूनाको मानलाई आउटपुट गरिन्छ।

#include <stdio.h>
#include <math.h>

int main() {
    int samples = 100;
    double frequency = 1.0;
    double amplitude = 1.0;
    double phase = 0.0;
    double sampleRate = 100.0;

    for (int i = 0; i < samples; i++) {
        double t = i / sampleRate;
        double value = amplitude * sin(2 * M_PI * frequency * t + phase);
        printf("नमूना %d: %fn", i, value);
    }
    return 0;
}

यो प्रोग्रामले निर्दिष्ट आवृत्ति र नमूना दर प्रयोग गरी साइन वेभलाई निर्माण गर्दछ। निर्माण गरिएको डेटा ध्वनि तथा अन्य संकेत प्रक्रियामा प्रयोग गर्न सकिन्छ।

4. स्वनिर्मित sin फंक्शनको कार्यान्वयन: Maclaurin विस्तार

C भाषा मा, sin फंक्शनलाई आफैं बनाउने पनि सम्भव छ। यो, विशेष वातावरणमा मानक लाइब्रेरी प्रयोग गर्न नसक्ने अवस्थामा वा अनुकूलन आवश्यक परेमा उपयोगी हुन्छ। Maclaurin विस्तार प्रयोग गरेर गरिएको नजिकको अनुमान, sin फंक्शनलाई बहुपदको रूपमा व्यक्त गर्ने विधि हो।

4.1 Maclaurin विस्तारद्वारा sin फंक्शन

Maclaurin विस्तार प्रयोग गरेर sin फंक्शनको नजिकको समीकरण यस प्रकार हुन्छ:

 sin(x) = x - frac{x^3}{3!} + frac{x^5}{5!} - frac{x^7}{7!} + dots

तलको कोड यो समीकरणलाई आधार बनाएर लेखिएको C भाषा कोड हो।

#include <stdio.h>
#include <math.h>

double factorial(int n) {
    double result = 1.0;
    for (int i = 2; i <= n; i++) {
        result *= i;
    }
    return result;
}

double my_sin(double x) {
    double result = 0.0;
    for (int i = 0; i < 10; i++) {  // 10 पदसम्म गणना
        int power = 2 * i + 1;
        double term = pow(x, power) / factorial(power);
        if (i % 2 == 0) {
            result += term;
        } else {
            result -= term;
        }
    }
    return result;
}

int main() {
    double angle = 1.57;
    printf("sin(1.57) = %fn", my_sin(angle));
    return 0;
}

यो प्रोग्रामले Maclaurin विस्तार प्रयोग गरेर sin फंक्शनलाई गणना गर्छ। नजिकको शुद्धता गणना गरिने पदहरूको संख्यामा निर्भर गर्दछ, लगभग 10 पदहरूमा पर्याप्त शुद्धता प्राप्त हुन्छ।

5. त्रुटिहरू र सावधानिहरू

Floating‑point संख्याहरूको प्रयोग गरेर गणना गर्दा, अत्यन्त साना मान वा ठूलो मानको प्रक्रिया गर्दा शुद्धताको समस्या उत्पन्न हुन सक्छ। विशेष गरी, sin फलनको आफ्नै कार्यान्वयनमा, गणना गर्ने पदहरूको संख्या धेरै भएमा, गणना लागत पनि बढ्छ। साथै, Maclaurin विस्तारमा, ठूलो कोण (उदाहरणका लागि, ±π भन्दा बढी) को लागि गणना शुद्धता घट्ने कारण, आवश्यक अनुसार उपयुक्त दायरा भित्र कोणलाई सामान्यीकरण गर्ने सिफारिस गरिन्छ।

6. सारांश

यस लेखमा, C भाषामा sin फलनको आधारभूत प्रयोगबाट, अनुप्रयोग उदाहरणहरू, र आफ्नै sin फलनको कार्यान्वयनसम्म समेटिएको छ। C भाषामा त्रिकोणमितीय फलनहरू प्रयोग गरेर, भौतिक सिमुलेशन, ध्वनि प्रसंस्करण जस्ता धेरै क्षेत्रहरूमा प्रयोग सम्भव छ। साथै, Maclaurin विस्तार प्रयोग गरेर आफ्नै बनाएको फलन मार्फत, फलनको कार्यविधि गहिरो रूपमा बुझ्न सकिन्छ। पाठकको परियोजनामा उपयोगी भएमा खुशी हुनेछ।