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
Hier voorbeeldprogramma's in C++ met behulp van wiskundige bibliotheken:
Bereken de sinus en cosinus van A
#erbij betrekken
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
#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
#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
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
Bereken de sinus van de hoek die u via het toetsenbord invoert. De hoek wordt in graden ingevoerd.
Lijst 2.
#erbij betrekken
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:
- voordat u argumenten aan de functie doorgeeft (zoals in ons hoofdvoorbeeld. Lijst 1.)
- het uitvoeren van rekenkundige bewerkingen met verschillende soorten argumenten
- 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
2. #opnemen
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