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:
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.