Bibliotheek met wiskundige functies math.h. Standaard wiskundige functies in C-taal

Wiskunde.h- headerbestand standaard bibliotheek C-taal, ontworpen om eenvoudig uit te voeren wiskundige bewerkingen. Omdat C++ deze functies ook implementeert voor compatibiliteit (ze zijn allemaal opgenomen in het cmath-headerbestand), zullen we deze talen samen bekijken. Onder Linux en FreeBSD wiskundige functies apart opgeborgen in wiskundige bibliotheek lib. Dus als een van deze instructies wordt gebruikt, moet de optie -lm tijdens het bouwen aan de linker worden doorgegeven. Omdat het resultaat van de meeste wiskundige bewerkingen is fractionele getallen, accepteren alle bibliotheekfuncties dubbel. Voor het werken met vlotter en lange dubbele functies met achtervoegsels f en l worden respectievelijk gebruikt.

Complex.h- headerbestand van de standaardbibliotheek van de programmeertaal C, die functies voor complexe rekenkunde declareert. Deze functies maken gebruik van het ingebouwde complexe type, dat werd geïntroduceerd in de C99-standaard. Er is voorzien in de functies in het headerbestand complex.h drie soorten— double, float en long double (waarden worden weergegeven in radialen): voor berekening trigonometrische waarden sinus, cosinus, tangens en cotangens voor complexe getallen, logaritme en exponent, wortel.

GNU (GSL)- het is gratis software onder GNU-licentie Algemene openbare licentie. De bibliotheek biedt een breed scala aan wiskundige routines, zoals generatoren willekeurige getallen, speciale functies en kleinste kwadraten. Er zijn in totaal meer dan 1000 functies met een uitgebreide testsuite. In tegenstelling tot licenties voor propriëtaire numerieke bibliotheken beperkt de GSL de wetenschappelijke samenwerking niet. Om de bibliotheek op te nemen, moet u schrijven: $\# include $. Om C++ uitzonderingsafhandeling binnen het raamwerk te gebruiken aangepaste functies als parameters aan de bibliotheek doorgegeven, moet de bibliotheek worden gebouwd met de compilatieoptie -fexceptions. De bibliotheek kan gebruikt worden programma's met meerdere threads. Alle functies zijn threaded in de zin dat ze geen statische variabelen gebruiken. Geheugen wordt altijd geassocieerd met objecten, niet met functies. Voor functies waarvan de objecten gebruiken werkruimte Als tijdelijke opslag moeten werkruimten per thread worden toegewezen. Voor functies die gebruiken tafel objecten, kan geheugen tegelijkertijd door meerdere threads worden gebruikt. De argumententabel wordt altijd constant verklaard in functieprototypes om aan te geven dat ze veilig toegankelijk zijn vanuit verschillende threads.

Hier voorbeeldprogramma's in C++ met behulp van wiskundige bibliotheken:

Bereken de sinus en cosinus van A

#erbij betrekken // wiskundebibliotheek

naamruimte std gebruiken;

uit<< «Input A = »; cin>> een; // voer een in

b=cos(a); //waarden toewijzen

uit<< «Cos A = „<

Programma-uitvoer:

Vind exp van nummer A

#include // I/O-bibliotheek

#erbij betrekken // wiskundebibliotheek

#erbij betrekken

#erbij betrekken

naamruimte std gebruiken;

SetConsoleOutputCP(1251);

dubbel a,b,c; // variabelen van dubbel type

uit<< “Input A = »; cin>> een; // voer een in

b=plafond(a); //opdracht gewaardeerd

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

Programma-uitvoer:

Verhef een getal tot een bepaalde macht

#include // I/O-bibliotheek

#erbij betrekken // wiskundebibliotheek

#erbij betrekken

#erbij betrekken

naamruimte std gebruiken;

SetConsoleOutputCP(1251);

dubbel a,b; // variabelen van dubbel type

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

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

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

Programma-uitvoer:

Een kwadratische vergelijking oplossen

#erbij betrekken

# omvatten # omvatten

naamruimte std gebruiken;

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

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

als (i == 2) cuit<< “x0 =»<< x0 << " x1 ="<< x1 << endl;

als (i == 1) cuit<< «x0 = » << x0 << endl;

als (i == 0) cuit<< «No solve » << endl;

Programma-uitvoer:

Statistische functies gebruiken

#erbij betrekken

#erbij betrekken

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

dubbel gemiddelde, variantie, grootste, kleinste;

gemiddelde = gsl_stats_mean(gegevens, 1, 5);

variantie = gsl_stats_variantie(data, 1, 5);

grootste = gsl_stats_max(data, 1, 5);

kleinste = gsl_stats_min(gegevens, 1, 5);

printf("De gegevensset is \%g, \%g, \%g,\%g, \%g\n",

gegevens, gegevens, gegevens, gegevens, gegevens);

printf("Het steekproefgemiddelde is \%g\ n", mean);

printf("De geschatte variantie is \%g\ n", variantie);

printf("De grootste waarde is \%g\n", grootste);

printf("De kleinste waarde is \%g\n", kleinste);

Alle wiskundige functies vereisen een header . C-programma's gebruiken een header

1 aco's Functie dubbele acos(dubbel arg arg
2 asin Functie dubbel asin (dubbel arg) retourneert de boogcosinus van het argument arg. De waarde van het functieargument moet tussen -1 en 1 liggen, anders treedt er een fout op.
3 atan Functie dubbel atan(dubbel arg) retourneert de boogtangens van het argument arg.
4 atan2 Functie dubbel atan2(dubbel X, dubbel j) retourneert de boogtangens van de waarde j/X.
5 plafond Functie dubbel plafond (dubbel num) retourneert het dichtstbijzijnde gehele getal (weergegeven als een reëel getal met drijvende komma) dat niet kleiner is dan de waarde van het argument num. Ceil(1.02) retourneert bijvoorbeeld 2.0. Deze conversie wordt overafronding genoemd.
6 want Functie dubbele cos(dubbel arg) retourneert de cosinus van het argument arg
7 cosh Functie dubbele cosh (dubbel arg) retourneert de hyperbolische cosinus van het argument arg.
8 exp Functie dubbele exp(dubbel arg) retourneert de basis van de natuurlijke logaritme e, tot een macht verheven arg.
9 fantastisch Functie dubbele fabs (dubbel num) retourneert de absolute waarde (modulowaarde) van het argument num.
10 vloer Functie dubbele bodem(dubbel num) retourneert het grootste gehele getal (weergegeven als een reëel getal met drijvende komma) dat niet groter is dan de waarde van het argument num. floor(1.02) retourneert bijvoorbeeld het getal 1.0. Deze conversie wordt afronding naar beneden genoemd.
11 fmod De functie dubbel fmod(dubbel x, dubbel y) retourneert de rest van deling x/y.
12 frexp Functie dubbele frexp(dubbel num, int * exp) breidt een getal uit num door een mantisse variërend van 0,1 tot 1, exclusief 1, en een gehele exponent, dus num = mantisse. De functie retourneert de mantisse en de waarde van de exponent wordt opgeslagen in de variabele waarnaar de aanwijzer verwijst exp.
13 loggen Functie dubbele log (dubbel num) retourneert de natuurlijke logaritme van een getal num. Als de argumentatie num
14 log10 Functie dubbele log10(dubbel num) retourneert de decimale logaritme van een getal num. Als de argumentatie num negatief of nul is, treedt er een fout op.
15 poe Functie dubbele pow (dubbel baseren, dubbel exp) retourneert een getal baseren, tot de macht verheven exp. Als de basis van het diploma baseren gelijk is aan nul, en de exponent exp kleiner is dan of gelijk is aan nul, kan er een fout optreden doordat het argument het domein van de functiedefinitie verlaat (domeinfout). Deze fout treedt ook op als het argument baseren is negatief en het argument exp is geen geheel getal.
16 zonde Functie dubbele zonde(dubbel arg) retourneert de sinus van het argument arg. De argumentwaarde moet worden uitgedrukt in radialen.
17 zonde Functie dubbele sinh (dubbel arg) retourneert de hyperbolische sinus van het argument arg.
18 sqrt Functie dubbele sqrt(dubbel num) retourneert de vierkantswortel van het argument num. Als het argument negatief is, treedt er een fout op omdat de functie buiten het bereik valt.
19 bruinen Functie dubbele tan(dubbel arg) retourneert de tangens van het argument arg. De argumentwaarde moet worden uitgedrukt in radialen.
20 tanh Functie dubbele tanh (dubbel arg) retourneert de hyperbolische tangens van het argument arg.

Laatst bijgewerkt: 31-10-2015

De klasse Math wordt gebruikt om verschillende wiskundige bewerkingen uit te voeren in de .NET-klassebibliotheek. Het is statisch, dus al zijn methoden zijn ook statisch.

Laten we eens kijken naar de methoden van de klasse Math:

    Abs(dubbele waarde) : Retourneert de absolute waarde voor het waarde-argument

    Dubbel resultaat = Math.Abs(-12.4); // 12.4

    Acos(dubbele waarde): Geeft de boogcosinus van de waarde terug. De parameter value moet een waarde tussen -1 en 1 hebben

    Dubbel resultaat = Math.Acos(1); // 0

    Asin(dubbele waarde): Geeft de boogsinus van de waarde terug. De parameter value moet een waarde tussen -1 en 1 hebben

    Atan(dubbele waarde): retourneert de boogtangens van de waarde

    BigMul(int x, int y): retourneert het product x * y als een lang object

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

    Plafond(dubbele waarde): retourneert het kleinste gehele getal met drijvende komma dat niet kleiner is dan de waarde

    Dubbel resultaat = Math.Ceiling(2.34); // 3

    Cos(dubbel d) : retourneert de cosinus van hoek d

    Cosh(dubbel d) : retourneert de hyperbolische cosinus van hoek d

    DivRem(int a, int b, out int result) : retourneert het resultaat van deling a/b, en de rest wordt in de resultaatparameter geplaatst

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

    Exp(dubbel d) : Geeft het grondtal terug van de natuurlijke logaritme verheven tot de macht d

    Floor(decimal d) : retourneert het grootste gehele getal dat niet groter is dan d

    Dubbel resultaat = Math.Floor(2,56); // 2

    IEEEREmainder(dubbel a, dubbel b): retourneert de rest van a gedeeld door b

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

    Log(dubbel d): retourneert de natuurlijke logaritme van d

    Log(dubbel a, dubbel newBase): retourneert de logaritme van een getal gebaseerd op newBase

    Log10(dubbel d) : Geeft de decimale logaritme van d terug

    Max(dubbel a, dubbel b): retourneert het maximale getal tussen a en b

    Min(dubbel a, dubbel b) : retourneert het minimumgetal tussen a en b

    Pow(dubbel a, dubbel b) : retourneert getal a verheven tot de macht b

    Round(double d): Geeft d terug, afgerond op het dichtstbijzijnde gehele getal

    Dubbel resultaat1 = Math.Round(20,56); // 21 dubbel resultaat2 = Math.Round(20.46); //20

    Round(double a, round b) : Retourneert het getal a, afgerond op het opgegeven aantal decimalen, weergegeven door b

    Dubbel resultaat1 = Math.Round(20,567, 2); // 20,57 dubbel resultaat2 = Math.Round(20,463, 1); //20.5

    Teken(dubbele waarde): Geeft 1 terug als de waarde positief is, en -1 als de waarde negatief is. Als de waarde 0 is, wordt 0 geretourneerd

    Int resultaat1 = Math.Sign(15); // 1 int resultaat2 = Math.Sign(-5); //-1

    Sin(dubbele waarde): retourneert de sinus van de hoekwaarde

    Sinh(dubbele waarde): retourneert de hyperbolische sinus van de hoekwaarde

    Sqrt(dubbele waarde): retourneert de vierkantswortel van de waarde

    Dubbel resultaat1 = Math.Sqrt(16); // 4

    Tan(dubbele waarde): retourneert de tangens van de hoekwaarde

    Tanh(dubbele waarde): retourneert de hyperbolische tangens van de hoekwaarde

    Truncate(double value): verwijdert het fractionele deel van de waarde en retourneert alleen de gehele waarde

    Dubbel resultaat = Math.Truncate(16.89); // 16

De klasse Math definieert ook twee constanten: Math.E en Math.PI. Laten we bijvoorbeeld de oppervlakte van een cirkel berekenen:

Console.WriteLine("Voer de straal van de cirkel in"); dubbele straal = Double.Parse(Console.ReadLine()); dubbel gebied = Math.PI * Math.Pow(straal, 2); Console.WriteLine("De oppervlakte van een cirkel met straal (0) is (1)", straal, oppervlakte);

Console-uitvoer:

Voer cirkelstraal 20 in. De oppervlakte van een cirkel met straal 20 is 1256.63706143592

Schort AdBlock op deze site op.

Wiskundige berekeningen zijn niet beperkt tot alleen rekenkundige bewerkingen. Daarnaast kun je ook wortels, modules, logaritmen, trigonometrische functies, enz. vinden. Laten we leren hoe we dergelijke functies in onze programma's kunnen gebruiken.

Om wiskundige functies te gebruiken, moet u het headerbestand math.h opnemen. Het definieert veel verschillende functies, maar voor nu zullen we naar het volgende kijken:

Enkele wiskundige functies

fabs(x) modulus van getal x
sqrt(x) wortel van getal x
sin(x) sinus van x (x in radialen)
cos(x) cosinus van x (x in radialen)
pow(x, y) berekening x y
exp(x) berekening e x
log(x) natuurlijke logaritme van x
log10(x) decimale logaritme van x

Twee belangrijke punten.

  • Alle functies retourneren een dubbele waarde.
  • Functieparameters zijn reële getallen (dubbel), maar u kunt ook gehele getallen doorgeven. Dit zal gebeuren impliciete typeconversie. De compiler maakt van een geheel getal, bijvoorbeeld 3, een reëel getal 3,0.

Voorbeelden.
De lengtes van de benen van een rechthoekige driehoek zijn gegeven. Bereken de lengte van de hypotenusa. Een eenvoudig probleem om uw kennis van de stelling van Pythagoras te testen.

Lijst 1.

#erbij betrekken #erbij betrekken // connect 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));

Bereken de sinus van de hoek die u via het toetsenbord invoert. De hoek wordt in graden ingevoerd.

Lijst 2.

#erbij betrekken #erbij betrekken // connect math.h int main (void) ( double alpha, sin_a, pi = 3.1415926; scanf("%lf",&alpha); alpha = alpha*pi/180; sin_a = sin(alpha); printf("% .2f\n", sin_a); retourneert 0; )

Er valt veel te bespreken in dit programma. Trigonometrische functies die zijn gedefinieerd in math.h werken met radiale hoekmetingen. Mensen zijn meer gewend om met diploma’s te werken. Daarom hebben we in dit programma eerst de waarde omgezet van graden naar radialen. Als dit niet wordt gedaan, is het resultaat onjuist. Bekijk het zelf.

Impliciete typeconversie

Bij het uitvoeren van een expliciete typeconversie hebben we tussen haakjes vóór de waarde aangegeven naar welk type de waarde moet worden gecast. Bij een impliciete conversie is dit niet nodig. De compiler selecteert automatisch het vereiste type.

Impliciete typeconversie wordt uitgevoerd in de volgende gevallen:

  1. voordat u argumenten aan de functie doorgeeft (zoals in ons hoofdvoorbeeld. Lijst 1.)
  2. het uitvoeren van rekenkundige bewerkingen met verschillende soorten argumenten
  3. voordat u de opdracht uitvoert

Impliciete typeconversieregels

  • als rekenkundige bewerkingen worden uitgevoerd met verschillende soorten argumenten. Beide argumenten worden naar het grotere type gegoten.
    Typevolgorde: int< float < double
  • wanneer toegewezen. De waarde rechts van de toewijzingsoperator wordt omgezet naar het type variabele links van de toewijzingsoperator. Als echter een groter type wordt toegewezen aan een kleiner type, kan er verlies aan nauwkeurigheid optreden.

int+float wordt automatisch omgezet naar float+float
float/int wordt automatisch omgezet naar float/float
double*float wordt omgezet in double*double
int = double double wordt geconverteerd naar int met verlies van het fractionele deel
float = int int wordt omgezet in float

Structuur van een C-programma

1. #opnemen cstdlib.h.

2. #opnemen - headerbestand opnemen iostream.h.

3 . gebruik van naamruimte std – gebruik standaard naamruimte

4. int hoofd(int argc, char *argv)– functienaam. Elk C-programma bestaat uit een of meer functies. In de geschreven sjabloon is er slechts één functie: voornaamst(). Functie met naam voornaamst moet zeker binnen zijn elk uitvoerbaar programma .

5. { - begin van functielichaam

6. systeem(“pauze”) – functie oproep systeem met argumentatie "pauze". De functie wacht op een toetsaanslag.

7. exploitant opbrengst met argumentatie EXIT_SUCCESS– beëindiging van de hoofdfunctie met code 0.

8. ) – einde van de functie voornaamst.

Eenvoudige C-gegevenstypen

Om gehele waarden in C weer te geven, zijn de volgende gegevenstypen beschikbaar:

Typ teken. Neemt 1 byte in beslag in het geheugen. Wordt gebruikt om tekens en gehele getallen van 0 tot 255 (-128 tot 127) weer te geven.

Typ int. Neemt 4 bytes in beslag in het geheugen. Wordt gebruikt om gehele getallen in het bereik -2.147.483.648 tot 2.147.483.647 weer te geven.

Type vlotter. Neemt 4 bytes in beslag in het geheugen. Wordt gebruikt om getallen met drijvende komma weer te geven. van 3,4×10 -38 tot 3,4×10 38. Berekeningsnauwkeurigheid tot 7 decimalen.

Typ dubbel. Neemt 8 bytes geheugen in beslag. Wordt gebruikt om getallen met drijvende komma weer te geven. van 1,7×10 -308 tot 1,7×10 308. Berekeningsnauwkeurigheid tot 15 decimalen.

typ leegte – leeg type. Wordt gebruikt om functies te beschrijven.

Typ bool – logisch type. Kan 2 waarden aannemen: waar of onwaar.

Basis C-operatoren

Een operator is een token dat een bepaalde berekening verandert wanneer het wordt toegepast op een variabele of ander object in een expressie. De C-taal biedt een groot aantal rekenkundige en logische operatoren.

Tabel 4.1. Unaire operatoren van C-taal

Tabel 4.2. Binaire operatoren in C-taal

Operatorcode Naam Resultaat van de operatie
Additieve operatoren
+ binair plus het berekenen van de som, bijvoorbeeld: int x = 2,y = 1,z;
- z = x+y; binair min
het verschil berekenen, bijvoorbeeld: int x = 2,y = 1,z;
* z = x-y; Multiplicatieve operatoren
/ vermenigvuldiging het product berekenen, bijvoorbeeld: int x = 2,y = 1,z;
% z = x*y; divisie
berekening van het quotiënt, bijvoorbeeld: int x = 12,y = 2,z;
&& z = x/y; rest
|| het berekenen van de rest van de deling, bijvoorbeeld: int x = 12,y = 7,z; z = x%y;
Logische operatoren
= logisch EN voorwaarden controleren die zijn verbonden door logische AND
logisch OF
< het controleren van logische OF-voorwaarden Toewijzingsoperatoren
> opdracht wijs een bepaalde waarde toe aan een variabele of de waarde van een andere variabele
<= Relationele operatoren Toewijzingsoperatoren<=y, x меньше или равно y
>= minder dan X
meer dan
= = x>y, x is groter dan y kleiner dan of gelijk
!= groter dan of gelijk x>=y, x groter dan of gelijk aan y
, Equivalentie-operatoren gelijk aan

x= =y, x is gelijk aan y

niet gelijk x!=y, x is niet gelijk aan y opsommingsoperator

door de operator gescheiden acties van links naar rechts uitvoeren, bijvoorbeeld y+=5,x-=4,y+=x; Bibliotheek met wiskundige functies math.h X. C ondersteunt veel wiskundige functies, waarvan de prototypes in het bestand worden beschreven wiskunde.h. X Laten we er een paar leren kennen. . abs(int x) geeft de modulus van een geheel getal terug X acos(dubbele x) geeft de boogcosinus van een getal terug in radialen X asin(dubbele x) geeft de boogsinus van een getal terug in radialen. atan(dubbele x) geeft de boogtangens van een getal terug in radialen. atof(char *s, dubbele x) converteert een tekenreeks X(X S naar reëel getal X. X cos(dubbele x) geeft de cosinus van een getal terug gegeven in radialen) in radialen. plafond(dubbel x) rondt een getal af in radialen. naar boven exp(dubbele x) X(X geeft de exponent van een getal terug Fabs(dubbel x) geeft de modulus van een reëel getal terug in radialen. zonde(dubbele x) geeft de sinus van een getal terug X(X gegeven in radialen). sqrt(dubbel x) X. X geeft het kwadraat van een getal terug bruin(dubbel x) geeft de tangens van een getal terug X gegeven in radialen). verdieping(dubbel x) naar beneden fmod(dubbele x, dubbele y) X geeft de rest terug na het delen van een getal verdieping(dubbel x) per nummer j. in radialen. hipot(dubbele x, dubbele y) geeft het kwadraat van de som van een getal terug in radialen. en cijfers logboek(dubbel x) retourneert de natuurlijke logaritme van een getal log10(dubbel x) j het gehele deel van het oorspronkelijke getal wordt geschreven in radialen. pow(dubbel x, dubbel y) retourneert X tot op zekere hoogte verdieping(dubbel x)

Om alle bovenstaande functies te gebruiken, sluit u de bibliotheek aan