Matemaattisten funktioiden kirjasto math.h. Tavalliset matemaattiset funktiot C-kielellä

Math.h- otsikkotiedosto tavallinen kirjasto C-kieli, joka on suunniteltu suorittamaan yksinkertainen matemaattisia operaatioita. Koska C++ toteuttaa myös nämä toiminnot yhteensopivuuden vuoksi (ne kaikki sisältyvät cmath-otsikkotiedostoon), tarkastelemme näitä kieliä yhdessä. Linuxin ja FreeBSD:n alla matemaattiset funktiot varastossa erikseen matemaattinen kirjasto libm. Siten, jos jotakin näistä ohjeista käytetään, -lm-optio on välitettävä linkkerille rakentamisen aikana. Koska useimpien matemaattisten operaatioiden tulos on murtolukuja, kaikki kirjaston toiminnot hyväksyvät double. Työskentelyyn kellukkeen ja pitkä tupla käytetään toimintoja, joissa on jälkiliitteet f ja l.

Monimutkainen.h- C-ohjelmointikielen vakiokirjaston otsikkotiedosto, joka ilmoittaa monimutkaisen aritmeettisen funktion. Nämä toiminnot käyttävät sisäänrakennettua monimutkaista tyyppiä, joka otettiin käyttöön C99-standardissa. Complex.h-otsikkotiedoston toiminnot ovat käytettävissä kolme tyyppiä— double, float ja long double (arvot esitetään radiaaneina): laskentaa varten trigonometriset arvot sini, kosini, tangentti ja kotangentti kompleksiluvuille, logaritmi ja eksponentti, juuri.

GNU (GSL)- se on ilmainen ohjelmisto alla GNU-lisenssi Yleinen julkinen lisenssi. Kirjasto tarjoaa laajan valikoiman matemaattisia rutiineja, kuten generaattoreita satunnaisia ​​numeroita, erikoistoiminnot ja pienimmät neliöt. Yhteensä yli 1000 ominaisuutta on kattava testipaketti. Toisin kuin patentoitujen numeeristen kirjastojen lisenssit, GSL ei rajoita tieteellistä yhteistyötä. Jos haluat sisällyttää kirjaston, sinun on kirjoitettava: $\# include $. C++-poikkeuskäsittelyn käyttäminen viitekehyksen sisällä mukautettuja toimintoja välitetään kirjastoon parametreina, kirjasto on rakennettava -fexceptions -käännösvaihtoehdolla. Kirjastoa voi käyttää mm monisäikeiset ohjelmat. Kaikki funktiot on säikeistetty siinä mielessä, että ne eivät käytä staattisia muuttujia. Muisti liittyy aina esineisiin, ei toimintoihin. Funktioille, joiden objektit käyttävät työtila Väliaikaisena varastona työtilat on jaettava säiettä kohden. Toimintoja, jotka käyttävät taulukon esineitä, muistia voidaan käyttää useissa säikeissä samanaikaisesti. Argumenttitaulukko julistetaan aina vakioksi funktioprototyypeissä, mikä osoittaa, että niitä voidaan käyttää turvallisesti eri säikeistä.

Tässä malliohjelmat C++:ssa käyttäen matemaattisia kirjastoja:

Etsi A:n sini ja kosini

#sisältää // matematiikan kirjasto

käyttäen nimiavaruutta std;

cout<< «Input A = »; cin>>a; //syöttö a

b = cos(a); //arvojen määrittäminen

cout<< «Cos A = „<

Ohjelman tulos:

Etsi exp numerosta A

#include // I/O-kirjasto

#sisältää // matematiikan kirjasto

#sisältää

#sisältää

käyttäen nimiavaruutta std;

SetConsoleOutputCP(1251);

kaksinkertainen a,b,c; // kaksinkertaiset muuttujat

cout<< “Input A = »; cin>>a; //syöttö a

b = katto (a); //tehtävä arvostettu

cout<< «Большее целое число A = „<

Ohjelman tulos:

Nosta luku potenssiin annettuihin arvoihin

#include // I/O-kirjasto

#sisältää // matematiikan kirjasto

#sisältää

#sisältää

käyttäen nimiavaruutta std;

SetConsoleOutputCP(1251);

kaksinkertainen a,b; // kaksinkertaiset muuttujat

cout<< “Введите число = »; cin>>a;

cout<< «Введите степень = »; cin>>b;

cout<< «Число в степени = „<

Ohjelman tulos:

Neliöyhtälön ratkaiseminen

#sisältää

# sisältää # sisällyttää

käyttäen nimiavaruutta std;

kaksinkertainen a = 1, b = 2, c = 1;

i = gsl_poly_selve_quadratic(a, b, c, &x0, &x1);

jos (i == 2) cout<< “x0 =»<< x0 << " x1 ="<< x1 << endl;

jos (i == 1) cout<< «x0 = » << x0 << endl;

jos (i == 0) cout<< «No solve » << endl;

Ohjelman tulos:

Kuinka käyttää tilastofunktioita

#sisältää

#sisältää

kaksoisdata = (17,2, 18,1, 16,5, 18,3, 12,6);

kaksinkertainen keskiarvo, varianssi, suurin, pienin;

keskiarvo = gsl_stats_mean(data, 1, 5);

varianssi = gsl_stats_variance(data, 1, 5);

suurin = gsl_stats_max(data, 1, 5);

pienin = gsl_stats_min(data, 1, 5);

printf("Tietojoukko on \%g, \%g, \%g,\%g, \%g\n",

data, data, data, data, data);

printf("Näytekeskiarvo on \%g\ n", keskiarvo);

printf("Arvioitu varianssi on \%g\ n", varianssi);

printf("Suurin arvo on \%g\n", suurin);

printf("Pienin arvo on \%g\n", pienin);

Kaikki matemaattiset funktiot vaativat otsikon . C-ohjelmat käyttävät otsikkoa

1 acos Toiminto double acos (double arg arg
2 asin Toiminto double asin (double arg) palauttaa argumentin arckosinin arg. Funktiotargumentin arvon on oltava välillä -1 - 1, muuten tapahtuu virhe.
3 atan Funktio double atan(double arg) palauttaa argumentin arktangentin arg.
4 atan2 Funktio double atan2(double x, tupla y) palauttaa arvon arktangentin y/x.
5 kattoon Toiminto kaksinkertainen katto (double nro) palauttaa lähimmän kokonaisluvun (esitetty liukulukureaalilukuna), joka ei ole pienempi kuin argumentin arvo nro. Esimerkiksi ceil(1.02) palauttaa arvon 2.0. Tätä muuntamista kutsutaan ylipyöristykseksi.
6 cos Funktio double cos (double arg) palauttaa argumentin kosinin arg
7 cosh Funktio double cosh(double arg) palauttaa argumentin hyperbolisen kosinin arg.
8 exp Funktio double exp(double arg) palauttaa luonnollisen logaritmin kantaluvun e, nostettu valtaan arg.
9 fabs Toiminto double fabs (double nro) palauttaa argumentin itseisarvon (modulo-arvon). nro.
10 kerros Toiminto kaksikerroksinen (kaksi nro) palauttaa suurimman kokonaisluvun (esitetty liukulukureaalilukuna), joka ei ole suurempi kuin argumentin arvo nro. Esimerkiksi floor(1.02) palauttaa luvun 1.0. Tätä muuntamista kutsutaan alaspäin pyöristämiseksi.
11 fmod Funktio double fmod(double x, double y) palauttaa jaon x/y jäännöksen.
12 frexp Funktio double frexp(double nro, int * exp) laajentaa numeroa nro mantissalla, joka vaihtelee välillä 0,1-1, lukuun ottamatta 1:tä, ja kokonaislukueksponentilla, joten nro = mantissa. Funktio palauttaa mantissan ja eksponentin arvo tallennetaan muuttujaan johon osoitin osoittaa exp.
13 loki Toiminto kaksoisloki (double nro) palauttaa luvun luonnollisen logaritmin nro. Jos argumentti nro
14 log10 Funktio double log10(double nro) palauttaa luvun desimaalilogaritmin nro. Jos argumentti nro on negatiivinen tai nolla, tapahtuu virhe.
15 pow Toiminto double pow(double pohja, tupla exp) palauttaa luvun pohja, nostettu valtaan exp. Jos tutkinnon perusteella pohja on yhtä suuri kuin nolla ja eksponentti exp on pienempi tai yhtä suuri kuin nolla, virhe voi tapahtua, koska argumentti jättää funktion määritelmän toimialueen (domain error). Tämä virhe ilmenee myös, jos argumentti pohja on negatiivinen ja argumentti exp ei ole kokonaisluku.
16 synti Funktio double sin(double arg) palauttaa argumentin sinin arg. Argumentin arvo on ilmaistava radiaaneina.
17 sinh Funktio double sinh(double arg) palauttaa argumentin hyperbolisen sinin arg.
18 sqrt Funktio double sqrt(double nro) palauttaa argumentin neliöjuuren nro. Jos argumentti on negatiivinen, tapahtuu virhe, koska funktio menee soveltamisalan ulkopuolelle.
19 rusketus Toiminto kaksoisrusketus (double arg) palauttaa argumentin tangentin arg. Argumentin arvo on ilmaistava radiaaneina.
20 tanh Funktio double tanh(double arg) palauttaa argumentin hyperbolisen tangentin arg.

Viimeksi päivitetty: 31.10.2015

Math-luokkaa käytetään erilaisten matemaattisten toimintojen suorittamiseen .NET-luokkakirjastossa. Se on staattinen, joten kaikki sen menetelmät ovat myös staattisia.

Katsotaanpa matematiikan luokan menetelmiä:

    Abs(kaksoisarvo) : Palauttaa arvoargumentin absoluuttisen arvon

    Kaksoistulos = Math.Abs(-12,4); // 12.4

    Acos(double value) : Palauttaa arvon kaarikosinin. Arvoparametrin arvon on oltava välillä -1 ja 1

    Kaksoistulos = Math.Acos(1); // 0

    Asin(kaksoisarvo) : Palauttaa arvon arcsinin. Arvoparametrin arvon on oltava välillä -1 ja 1

    Atan(kaksoisarvo): palauttaa arvon arktangentin

    BigMul(int x, int y) : palauttaa tuotteen x * y pitkänä objektina

    Kaksoistulos = Math.BigMul(100, 9340); // 934000

    Katto(kaksoisarvo) : palauttaa pienimmän liukulukukokonaisluvun, joka ei ole pienempi kuin arvo

    Kaksoistulos = Math.Ceiling(2.34); // 3

    Cos(double d) : palauttaa kulman d kosinin

    Cosh(double d) : palauttaa kulman d hyperbolisen kosinin

    DivRem(int a, int b, out int tulos) : palauttaa jaon a/b tuloksen ja loppuosa sijoitetaan tulosparametriin

    Int tulos; int div = Math.DivRem(14, 5, out tulos); //tulos = 4 // jako = 2

    Exp(double d) : Palauttaa luonnollisen logaritmin kantaarvon korotettuna potenssiin d

    Lattia(desimaali d) : palauttaa suurimman kokonaisluvun, joka ei ole suurempi kuin d

    Kaksoistulos = Math.Floor(2.56); // 2

    IEEERemainder(double a, double b) : palauttaa a:n jäännöksen jaettuna b:llä

    Kaksoistulos = Math.IEEERemainder(26, 4); // 2 = 26-24

    Log(double d) : palauttaa d:n luonnollisen logaritmin

    Log(double a, double newBase) : palauttaa luvun logaritmin newBase-pohjan perusteella

    Log10(double d) : Palauttaa d:n desimaalilogaritmin

    Max(double a, double b) : palauttaa enimmäisluvun a:n ja b:n välillä

    Min(double a, double b) : palauttaa vähimmäisluvun a:n ja b:n välillä

    Pow(double a, double b) : palauttaa luvun a korotettuna b:n potenssiin

    Pyöreä(double d) : Palauttaa d:n pyöristettynä lähimpään kokonaislukuun

    Kaksoistulos1 = Math.Round(20.56); // 21 tuplatulos2 = Math.Round(20.46); //20

    Pyöreä(kaksois a, pyöreä b) : Palauttaa luvun a pyöristettynä määritettyyn desimaalien määrään, jota edustaa b

    Kaksoistulos1 = Math.Round(20.567, 2); // 20.57 tuplatulos2 = Math.Round(20.463, 1); //20.5

    Merkki(kaksoisarvo) : Palauttaa arvon 1, jos arvo on positiivinen, ja -1, jos arvo on negatiivinen. Jos arvo on 0, palauttaa 0

    Int tulos1 = Math.Sign(15); // 1 int tulos2 = Math.Sign(-5); //-1

    Sin(kaksoisarvo): palauttaa kulman arvon sinin

    Sinh(kaksoisarvo) : palauttaa kulman arvon hyperbolisen sinin

    Sqrt(double value) : palauttaa arvon neliöjuuren

    Kaksoistulos1 = Math.Sqrt(16); // 4

    Tan(kaksoisarvo): palauttaa kulman arvon tangentin

    Tanh(double value) : palauttaa kulman arvon hyperbolisen tangentin

    Katkaise(kaksoisarvo): hylkää arvon murto-osan ja palauttaa vain kokonaisluvun

    Kaksoistulos = Math.Truncate(16.89); // 16

Math-luokka määrittelee myös kaksi vakiota: Math.E ja Math.PI. Lasketaan esimerkiksi ympyrän pinta-ala:

Console.WriteLine("Anna ympyrän säde"); double radius = Double.Parse(Console.ReadLine()); double area = Math.PI * Math.Pow(säde, 2); Console.WriteLine("Ympyrän pinta-ala säteellä (0) on (1)", säde, alue);

Konsolin lähtö:

Syötä ympyrän säde 20 Ympyrän, jonka säde on 20, pinta-ala on 1256.63706143592

Keskeytä AdBlock tällä sivustolla.

Matemaattiset laskelmat eivät rajoitu vain aritmeettisiin operaatioihin. Niiden lisäksi löydät myös juuria, moduuleja, logaritmeja, trigonometrisiä funktioita jne. Opitaanpa käyttämään tällaisia ​​toimintoja ohjelmissamme.

Jotta voit käyttää matemaattisia funktioita, sinun on sisällytettävä otsikkotiedosto math.h . Se määrittelee monia erilaisia ​​toimintoja, mutta nyt tarkastelemme seuraavaa:

Jotkut matemaattiset funktiot

fabs(x) luvun x moduuli
sqrt(x) luvun x neliöjuuri
sin(x) x:n sini (x radiaaneina)
cos(x) x:n kosini (x radiaaneina)
pow(x, y) laskenta x y
exp(x) laskenta e x
log(x) x:n luonnollinen logaritmi
log10(x) x:n desimaalilogaritmi

Kaksi tärkeää kohtaa.

  • Kaikki funktiot palauttavat kaksinkertaisen arvon.
  • Funktioparametrit ovat reaalilukuja (double), mutta voit myös välittää kokonaislukuja. Tämä tapahtuu implisiittinen tyyppimuunnos. Kääntäjä tekee reaaliluvun 3.0 kokonaisluvusta, esimerkiksi 3.

Esimerkkejä.
Suorakulmaisen kolmion jalkojen pituudet on annettu. Laske hypotenuusan pituus. Yksinkertainen tehtävä, jolla voit testata Pythagoraan lauseen tuntemusta.

Listaus 1.

#sisältää #sisältää // yhdistä math.h int main (void) ( int a, b, c2; scanf("%d",&a); scanf("%d",&b); c2 = a*a + b*b; printf ("c = %.2f\n", sqrt(c2));

Laske näppäimistöltä syötetyn kulman sini. Kulma syötetään asteina.

Listaus 2.

#sisältää #sisältää // yhdistä math.h int main (void) ( double alfa, sin_a, pi = 3.1415926; scanf("%lf",&alpha); alpha = alpha*pi/180; sin_a = sin(alpha); printf("% .2f\n", sin_a); palauttaa 0; )

Tässä ohjelmassa on paljon puhuttavaa. Math.h:ssa määritellyt trigonometriset funktiot toimivat radiaanikulmamittauksilla. Ihmiset ovat enemmän tottuneet työskentelemään tutkintojen kanssa. Siksi tässä ohjelmassa muunnosimme ensin arvon asteina radiaaneiksi. Jos tätä ei tehdä, tulos on virheellinen. Tarkista se itse.

Implisiittinen tyyppimuunnos

Kun suoritimme eksplisiittistä tyyppimuunnosa, merkitsimme suluissa ennen arvoa tyypin, johon arvo tulee lähettää. Tätä ei tarvitse tehdä implisiittisessä muunnoksessa. Kääntäjä valitsee automaattisesti tarvittavan tyypin.

Implisiittinen tyyppimuunnos suoritetaan seuraavissa tapauksissa:

  1. ennen argumenttien välittämistä funktiolle (kuten juuriesimerkissämme. Listaus 1.)
  2. suorittaa aritmeettisia operaatioita erityyppisillä argumenteilla
  3. ennen tehtävän suorittamista

Implisiittiset tyyppimuunnossäännöt

  • jos aritmeettisia operaatioita suoritetaan erityyppisillä argumenteilla. Molemmat argumentit heitetään suuremmalle tyypille.
    Tyyppijärjestys: int< float < double
  • kun määrätään. Osoitusoperaattorin oikealla puolella oleva arvo valetaan osoitusoperaattorin vasemmalla puolella olevan muuttujan tyyppiin. Kuitenkin, jos suurempi tyyppi määritetään pienemmälle, tarkkuus voi heikentyä.

int+float muunnetaan automaattisesti float+floatiksi
float/int muunnetaan automaattisesti float/float-muotoon
double*float muunnetaan double*doubleksi
int = double double muunnetaan int:ksi murto-osan häviämällä
float = int int muunnetaan floatiksi

C-ohjelman rakenne

1. #sisällytä cstdlib.h.

2. #sisällytä - sisältää otsikkotiedoston iostream.h.

3 . käyttämällä nimiavaruutta std – käytä tavallista nimiavaruutta

4. int main(int argc, char *argv)– toiminnon nimi. Mikä tahansa C-ohjelma koostuu yhdestä tai useammasta funktiosta. Kirjallisessa mallissa on vain yksi toiminto - main(). Toiminto nimen kanssa pää täytyy ehdottomasti olla mukana mikä tahansa suoritettava ohjelma .

5. { - kehon toiminnan alku

6. järjestelmä ("tauko") - toimintokutsu järjestelmä argumentin kanssa "tauko". Toiminto odottaa näppäimen painamista.

7. operaattori palata argumentin kanssa EXIT_SUCCESS– päätoiminnon lopetus koodilla 0.

8. ) – toiminnon loppu pää.

Yksinkertaiset C-tietotyypit

Kokonaislukuarvojen esittämiseksi C:ssä tarjotaan seuraavat tietotyypit:

Kirjoita char. Vie muistissa 1 tavun. Käytetään edustamaan merkkejä ja kokonaislukuja 0-255 (-128-127).

Kirjoita int. Vie muistissa 4 tavua. Käytetään edustamaan kokonaislukuja välillä -2 147 483 648 - 2 147 483 647.

Kirjoita float. Vie muistissa 4 tavua. Käytetään edustamaan liukulukuja. 3,4 × 10 -38 - 3,4 × 10 38. Laskentatarkkuus jopa 7 desimaalin tarkkuudella.

Kirjoita kaksinkertainen. Vie muistissa 8 tavua. Käytetään edustamaan liukulukuja. 1,7 × 10 -308 - 1,7 × 10 308. Laskentatarkkuus jopa 15 desimaalin tarkkuudella.

tyyppi tyhjä - tyhjä tyyppi. Käytetään toimintojen kuvaamiseen.

Kirjoita bool – looginen tyyppi. Voi ottaa 2 arvoa: tosi tai epätosi.

C-perusoperaattorit

Operaattori on merkki, joka vaihtaa laskutoimituksia, kun sitä käytetään lausekkeen muuttujaan tai muuhun objektiin. C-kieli esittää suuren joukon aritmeettisia ja loogisia operaattoreita.

Taulukko 4.1. C-kielen unaarioperaattorit

Taulukko 4.2. C-kielen binäärioperaattorit

Operaattorin koodi Nimi Leikkauksen tulos
Additiiviset operaattorit
+ binääri plus summan laskeminen, esimerkiksi: int x = 2,y = 1,z;
- z = x+y; binäärinen miinus
laskemalla ero, esimerkiksi: int x = 2,y = 1,z;
* z = x-y; Multiplikatiiviset operaattorit
/ kertolasku tulon laskeminen, esimerkiksi: int x = 2,y = 1,z;
% z = x*y; jako
osamäärän laskeminen, esimerkiksi: int x = 12,y = 2,z;
&& z = x/y; loput
|| laskemalla jaon jäännös, esimerkiksi: int x = 12,y = 7,z; z = x%y;
Loogiset operaattorit
= looginen JA loogisella JA:lla yhdistettyjen ehtojen tarkistus
looginen TAI
< loogisten TAI ehtojen tarkistaminen Tehtäväoperaattorit
> toimeksianto määrittää tietyn arvon muuttujalle tai toisen muuttujan arvon
<= Relaatiooperaattorit Tehtäväoperaattorit<=y, x меньше или равно y
>= vähemmän kuin x
enemmän kuin
= = x>y, x on suurempi kuin y pienempi tai yhtä suuri
!= suurempi tai yhtä suuri x>=y, x suurempi tai yhtä suuri kuin y
, Vastaavuusoperaattorit on yhtä suuri

x= =y, x on yhtä kuin y

ei tasa-arvoinen x!=y, x ei ole yhtä suuri kuin y laskentaoperaattori

suorittaa operaattorilla erotettuja toimintoja vasemmalta oikealle, esimerkiksi y+=5,x-=4,y+=x; Matemaattisten funktioiden kirjasto math.h x. C tukee monia matemaattisia funktioita, joiden prototyypit on kuvattu tiedostossa matematiikka.h x Tutustutaanpa joihinkin niistä. . abs (int x) palauttaa kokonaisluvun moduulin x acos (double x) palauttaa luvun arkkosinin radiaaneina x asin (kaksois x) palauttaa luvun arsinin radiaaneina. atan (kaksois x) palauttaa luvun arktangentin radiaaneina. atof(merkki *s, double x) muuntaa merkkijonon x(x s todelliseen numeroon x. x cos (double x) palauttaa luvun kosinin annettu radiaaneina) radiaaneina. katto (double x) pyöristää numeron radiaaneina. ylöspäin exp(double x) x(x palauttaa luvun eksponentin upeat (double x) palauttaa reaaliluvun moduulin radiaaneina. synti (kaksois x) palauttaa luvun sinin x(x radiaaneina). sqrt (double x) x. x palauttaa luvun neliön rusketus (kaksois x) palauttaa luvun tangentin x radiaaneina). kerros (kaksi x) alaspäin fmod(double x, double y) x palauttaa jäännöksen luvun jakamisen jälkeen kerros (kaksi x) numeroa kohti y. radiaaneina. hypot (kaksois x, tupla y) palauttaa luvun summan neliön radiaaneina. ja numerot loki (kaksois x) palauttaa luvun luonnollisen logaritmin log10 (kaksois x) y alkuperäisen luvun kokonaislukuosa kirjoitetaan radiaaneina. pow(double x, double y) palaa x jossain määrin kerros (kaksi x)

Jos haluat käyttää kaikkia yllä olevia toimintoja, yhdistä kirjasto