MATEMAATTISET-FUNKTIOT

C-kiellessä on matematiikkaan liittyviä funktioita erilaisten laskutoimitusten ohjelmointiin otsikkotiedostossa math.h.

math.h:sta saadaan pii:lle kätevästi likiarvo kirjoittamalla laskutoimitukseen M_PI.

Esimerkki.

float ala, sade; ala = M_PI * sade * sade;

Esimerkki.

#include <stdio.h> #include <math.h> int main(void) { printf("math.h-tiedostosta saatava pii = %f",M_PI); getch(); return 0; }




NELIÖJUURI

Luvun neliöjuuri: sqrt(x)

Esimerkki.

#include <stdio.h> #include <math.h> int main(void) { double x , y=0, tulos; printf("Anna luku: "); scanf("%lf",&x); /*Neliöjuuri*/ tulos= sqrt(x); printf("\nLuvun neliojuuri = %f \n", tulos); getch(); return 0; }




POTENSSIT

Luku potenssiin x

xy, eli x potenssiin y: pow(x,y)

Esim.

#include <stdio.h> #include <math.h> int main(void) { double x , y, tulos; printf("Anna luku: "); scanf("%lf",&x); printf("Anna eksponetti: "); scanf("%lf",&y); /*Potenssi*/ tulos= pow(x,y); printf("\n%.2lf potenssiin %.2lf = %lf \n", x, y, tulos); getch(); return 0; }




Neperin luvun potenssi

ey, eli Neperin luku e potenssiin y: exp(y)

Esim.

#include <stdio.h> #include <math.h> int main(void) { double x , tulos; printf("Anna eksponetti: "); scanf("%lf",&x); /*Neperin luvun potenssi*/ tulos= exp(x); printf("\ne potenssiin %.2lf = %lf \n", x, tulos); getch(); return 0; }




LOGARITMIT


Luonnollinen logritmi

ln x, eli luonnollinen logaritmi : log(x)

Jonkin luvun x luonnolinen logaritmi:

tulos= log(x);



Kymmenkantainen logritmi

ln x, eli lymmenenkantainen logaritmi : log(x)

Jonkin luvun x luonnolinen logaritmi:

tulos= log10(x);


Esimerkki.

#include <stdio.h> #include <math.h> int main(void) { double x , tulos; printf("Anna luku: "); scanf("%lf",&x); /* Logaritmit */ tulos= log(x); printf("\n%.2lf luonnollinen logaritmi = %lf \n", x, tulos); tulos= log10(x); printf("%.2lf kymmenkantainen logaritmi = %lf \n", x, tulos); /* tarkistus */ x = tulos; tulos= pow(10,x); printf("\nTarkistus 10 potenssiin %lf = %lf \n", x, tulos); getch(); return 0; }




TRIGONOMETRISET FUNKTIOT


Radiaanit ja asteet


Trigonometrisissä funktioissa on hyvää muistaa C-kielen käsittelevän kulmia radiaaneina. Alla matemaattinen määritelmä radiaaneille.

Example pic

Esimerkki (alla), ohjelma muuttaa annetun asteet radiaaneiksi sekä annetut radiaanit asteiksi.

#include <stdio.h> #include <math.h> int main(void) { double asteet, radiaani, radit; printf("(HUOM! 1 rad = 57,295577951 astetta)\n\n"); printf("Anna asteluku: "); scanf("%lf",&asteet); printf("Anna radiaani-luku: "); scanf("%lf",&radit); /* asteet-radiaaneiksi muunnin */ radiaani= asteet/(360/(2*M_PI)); printf("\n%.2lf astetta = %lf radiaania\n", asteet, radiaani); /* radiaanit-asteiksi muunnin */ asteet=radit*(360/(M_PI*2)); printf("\n%.2lf radiaania = %lf astetta \n", radit, asteet); getch(); return 0; }




SINI -FUNKTIOT

Kulman sini ja arkus-sini

Jotta C-kielellä kulman sini saadaan on ensin annettu kulma muutettava radiaaneiksi, edelleen arkussini laskussa on hyödynnettävä radiaani-muunnosta. Esimerkki (alla), ohjelma pyytää kulman jonka sini halutaan. Ohjelma näyttää annetun kulman sini sekä muuttaa saadun tuloksen takaisin asteluvuksi.

#include <stdio.h> #include <math.h> int main(void) { double asteet, radiaani, tulos; printf("Kulman sini\n\n"); printf("Anna asteluku: "); scanf("%lf", &asteet); /*ensin asteet-radiaaneiksi*/ radiaani = asteet / (360 / ( 2*M_PI )); /*sen jälkeen sini radiaaneista*/ tulos = sin(radiaani); printf("\nKulman %.2lf sini = %lf \n", asteet, tulos); /*saatujen asteiden arkusini*/ tulos = asin(tulos); /*ja muunnos radiaani-säännöllä asteiksi*/ asteet = tulos * (360 / ( M_PI*2 )); printf("\narcus sini = %lf \n", asteet); getch(); return 0; }




Hyperbolinen sini:

tulos= sinh(x);



KOSINI -FUNKTIOT

kosini-funktio toimii ohjelmallisesti samalla periaatteella kuin yllä olevassa esimerkki-ohjelmassa sini.

tulos1 = cos(x); /* x = kulma radiaaneina */ tulos2 = acos(tulos1); /* tulos2 muutettava asteiksi */

Hyperbolinen cosini:

tulos= cosh(x);



TANGENTTI -FUNKTIOT

tangentti-funktion toiminnan ohjelmointi C-kielellä tarvitsee samat muunnokset kuin sini ja kosini, katso aiempi esimerkki.

tulos1 = tan(x); /* x = kulma radiaaneina */ tulos2 = atan(tulos1); /*tulos2 muutettava asteiksi */

Hyperbolinen tangentti:

tulos= tanh(x);



Lisää trigonometriaan liittyviä funktioita on löydettävissä hakukoneilla hakusanalla math.h.


MUITA MATEMATIIKKAAN LIITTYVIÄ FUNKTIOITA

REAALILUVUN ITSEISARVO

Reaaliluvun itseisarvo on sen etäisyys lukusuoran nollasta riippumatta onko luku positiivinen tai negatiivinen. Itseisarvofunktiota fabs käytetään vain kaksoistarkkuuden liukuluvuille.

double luku, tulos; tulos = fabs(luku);


JAKOJÄÄNNÖS LIUKULUKUNA

Liukulukujen jakojäännöksen selvittämiseen käytetään fmod() -funktiota.

double luku1, luku2, tulos; tulos = fmod(luku1, luku2);


Esimerkissä (alla), aluksi pyydetään kaksi lukua (esim. -23.56 ja 0.789),a selvitetään annettujen lukujen itseisarvot fabs()-funktion avulla ja näytetään ne. Seuraavaksi pyydetään kaksi lukua (esim. 10 ja 3), selvitetään niiden jakojäännös fmod()-funktiolla ja näytetään se.

#include <stdio.h> #include <math.h> int main(void) { double x, y, tulos; printf("Kahden annetun luvun itseisarvot"); printf("\n1.luku: "); scanf("%lf", &x); printf("2.luku: "); scanf("%lf", &y); printf("%lf\n",fabs(x)); printf("%lf\n",fabs(y)); printf("\nKahden annetun luvun jakojaannos liukulukuna"); printf("\n3.luku: "); scanf("%lf", &x); printf("4.luku: "); scanf("%lf", &y); tulos=fmod(x,y); printf("%lf\n",tulos); getch(); return 0; }




LUVUN PYÖRISTÄMINEN ALAS JA YLÖS

Funktiolla ceil()voidaan luku pyöristää ylöspäin seuraavaan kokonaislukuun ja funktiolla floor() alaspäin lähimpään kokonaislukuun.

Esimerkki. Ohjelmaan annetaan luvut desimaalimuodossa esim. 2.57 ja 123.786. Ohjelma pyöristää annetut luvut.

#include <stdio.h> #include <math.h> int main(void) { double x, y, tulos; printf("Kahden annetun luvun pyoristaminen"); printf("\n1.luku: "); scanf("%lf", &x); printf("2.luku: "); scanf("%lf", &y); printf("ylos %lf\n", ceil(x)); printf("alas %lf\n", floor(y)); getch(); return 0; }