C keele sin-funktsioon: kasutamine, näited ja oma funktsiooni loomine

1. Sissejuhatus C keele sin-funktsiooni

C keeles on võimalik kasutada standardteeki math.h, et arvutada trigonomeetrilisi funktsioone. Nendest on sin-funktsioon mõeldud nurga siinuse väärtuse leidmiseks. Selles artiklis selgitame üksikasjalikult, kuidas kasutada sin-funktsiooni C keeles, selle rakendusi ning kuidas luua omaenda sin-funktsioon.

1.1 Mis on sin-funktsioon?

sin-funktsioon võtab argumendiks nurga radiaanides ja tagastab selle nurga siinuse väärtuse. Radiaan on nurga mõõtühik, mis põhineb pii (π) väärtusel; kraadidest radiaanideks teisendamiseks on vaja teha arvutus.

2. C keele math.h teegi põhitõed

Trigonomeetriliste funktsioonide kasutamiseks tuleb kaasata math.h. See võimaldab kasutada sin-funktsiooni ja teisi matemaatilisi funktsioone.

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

int main() {
    double angle = 1.57; // radiaan, mis vastab 90 kraadile
    double result = sin(angle);
    printf("sin(1.57) = %fn", result);
    return 0;
}

See kood väljastab 90 kraadi (1,57 radiaani) siinuse väärtuse, mis on 1.000000.

2.1 Kraadide ja radiaanide teisendamine

Kraadi radiaanideks teisendamiseks kasutatakse järgmist valemit:

#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 kraadi) = %fn", deg, sin(rad));
    return 0;
}

See programm teisendab 90 kraadi radiaanideks ja kasutab saadud väärtust sin-funktsioonis.

年収訴求

3. Rakendusnäide: Siinuse laine genereerimine

Siinuse laine on laialt kasutatav signaal heli sünteesis ja signaalitöötluses. Allolev kood genereerib siinuse laine ja väljastab iga näidise väärtuse.

#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("Näidis %d: %fn", i, value);
    }
    return 0;
}

See programm genereerib määratud sageduse ja diskreetimissageduse abil siinuse laine. Genereeritud andmeid saab kasutada helitöötluses või muudes signaalitöötluse rakendustes.

4. Oma sin-funktsiooni loomine: Maclaurini rida

C keeles on võimalik luua ka oma sin-funktsioon. See on kasulik näiteks siis, kui standardteeki ei saa kasutada või on vaja kohandatud funktsiooni. Maclaurini rea abil saab sin-funktsiooni lähendada polünoomiga.

4.1 Sin-funktsioon Maclaurini rea abil

Maclaurini rea lähendus sin-funktsioonile on järgmine:

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

Allolev kood realiseerib selle valemi C keeles.

#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++) {  // arvutame kuni 10 liiget
        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;
}

See programm arvutab sin-funktsiooni Maclaurini rea abil. Täpsus sõltub arvutatud liikmete arvust; umbes 10 liiget annab juba piisava täpsuse.

5. Veatekked ja ettevaatusabinõud

Ujukomaarvudega arvutamisel võib väga väikeste või väga suurte väärtuste korral tekkida täpsusprobleeme. Eriti oma sin-funktsiooni puhul tõuseb arvutuskoormus koos liikmete arvuga. Samuti väheneb Maclaurini rea täpsus suurte nurkade (näiteks ±π ja suurem) korral, seega on soovitatav nurk enne arvutust sobivasse vahemikku normaliseerida.

6. Kokkuvõte

Selles artiklis käsitlesime C keele sin-funktsiooni põhikasutust, rakendusi ja oma funktsiooni loomist. Trigonomeetriliste funktsioonide kasutamine C keeles võimaldab lahendada ülesandeid paljudes valdkondades, näiteks füüsikasimulatsioonides ja helitöötluses. Oma funktsiooni loomine Maclaurini rea abil aitab paremini mõista funktsiooni tööpõhimõtteid. Loodetavasti on see kasulik teie projektides.