Interaktivní výuka jazyka Python. Matematické funkce - Math class
Všechny matematické funkce vyžadují záhlaví
1 | acos | Funkce double acos(double arg arg |
2 | jako v | Funkce double asin (double arg) vrátí arkus cosinus argumentu arg. Hodnota argumentu funkce musí být v rozsahu od -1 do 1, jinak dojde k chybě. |
3 | opálení | Funkce double atan(double arg) vrátí arkustangens argumentu arg. |
4 | atan2 | Funkce double atan2(double X, dvojitý y) vrátí arkustangens hodnoty y/X. |
5 | strop | Funkce dvojitý strop (double č) vrátí nejbližší celé číslo (reprezentované jako reálné číslo s plovoucí desetinnou čárkou), které není menší než hodnota argumentu č. Například ceil(1.02) vrátí 2,0. Tento převod se nazývá zaokrouhlení. |
6 | cos | Funkce double cos(double arg) vrátí kosinus argumentu arg |
7 | cosh | Funkce double cosh (double arg) vrátí hyperbolický kosinus argumentu arg. |
8 | zk | Funkce double exp(double arg) vrací základnu přirozeného logaritmu E, povýšen na moc arg. |
9 | fabi | Funkce double fabs (double č) vrátí absolutní hodnotu (hodnotu modulo) argumentu č. |
10 | podlaha | Funkční dvojitá podlaha (double č) vrátí největší celé číslo (reprezentované jako reálné číslo s plovoucí desetinnou čárkou), které není větší než hodnota argumentu č. Například podlaha(1.02) vrátí číslo 1.0. Tento převod se nazývá zaokrouhlení dolů. |
11 | fmod | Funkce double fmod(double x, double y) vrací zbytek dělení x/y. |
12 | frexp | Funkce double frexp(double č, int * zk) rozšiřuje číslo č mantisou v rozsahu od 0,1 do 1, kromě 1, a exponentem celého čísla, takže č = mantisa. Funkce vrátí mantisu a hodnota exponentu se uloží do proměnné, na kterou ukazuje ukazatel zk. |
13 | log | Funkce double log(double č) vrátí přirozený logaritmus čísla č. Pokud argument č |
14 | log10 | Funkce double log10(double č) vrací dekadický logaritmus čísla č. Pokud argument č je záporné nebo nulové, dojde k chybě. |
15 | pow | Funkce double pow(double základna, dvojitý zk) vrátí číslo základna, povýšen k moci zk. Pokud je základem titul základna se rovná nule a exponent zk je menší nebo roven nule, může dojít k chybě kvůli argumentu opouštějícímu doménu definice funkce (chyba domény). K této chybě dochází také v případě, že argument základna je negativní a argument zk není celé číslo. |
16 | hřích | Funkce dvojitý hřích (dvojitý arg) vrátí sinus argumentu arg. Hodnota argumentu musí být vyjádřena v radiánech. |
17 | sinh | Funkce double sinh(double arg) vrátí hyperbolický sinus argumentu arg. |
18 | sqrt | Funkce double sqrt(double č) vrátí druhou odmocninu argumentu č. Pokud je argument záporný, dojde k chybě, protože funkce překročí rozsah. |
19 | opálení | Funkce double tan (double arg) vrátí tangens argumentu arg. Hodnota argumentu musí být vyjádřena v radiánech. |
20 | tanh | Funkce double tanh (double arg) vrátí hyperbolický tangens argumentu arg. |
Math.h je soubor záhlaví standardní knihovny C určený k provádění jednoduchých matematických operací. Protože C++ také implementuje tyto funkce pro kompatibilitu (všechny jsou obsaženy v hlavičkovém souboru cmath), budeme tyto jazyky zvažovat společně. V Linuxu a FreeBSD jsou matematické funkce uloženy odděleně v matematické knihovně libm. Pokud je tedy použita některá z těchto instrukcí, musí být při sestavování předána linkeru volba -lm. Protože výsledkem většiny matematických operací jsou zlomková čísla, všechny knihovní funkce akceptují dvojnásobek. Pro práci s typem float a long double se používají funkce s příponami f a l, resp.
Komplexní.h- hlavičkový soubor standardní knihovny programovacího jazyka C, který deklaruje funkce pro komplexní aritmetiku. Tyto funkce využívají vestavěný komplexní typ, který byl zaveden ve standardu C99. Funkce v záhlaví souboru complex.h jsou uvedeny pro tři typy - double, float a long double (hodnoty jsou uvedeny v radiánech): pro výpočet trigonometrických hodnot sinus, kosinus, tangens a kotangens pro komplexní čísla, logaritmus a exponent, kořen.
GNU (GSL) je svobodný software licencovaný pod GNU General Public License. Knihovna poskytuje širokou škálu matematických rutin, jako jsou generátory náhodných čísel, speciální funkce a nejmenší čtverce. Celkem existuje více než 1000 funkcí s rozsáhlou testovací sadou. Na rozdíl od licencí pro proprietární numerické knihovny GSL neomezuje vědeckou spolupráci. Chcete-li zahrnout knihovnu, musíte napsat: $\# include
Zde jsou ukázkové programy C++ využívající matematické knihovny:
Najděte sinus a kosinus A
#zahrnout
pomocí jmenného prostoru std;
cout<< «Input A = »; cin>>a; //vstup a
b=cos(a); //přiřazení hodnot
cout<< «Cos A = „<
Výstup programu:
Najděte exp z čísla A
#include // I/O knihovna
#zahrnout
#zahrnout
#zahrnout
pomocí jmenného prostoru std;
SetConsoleOutputCP(1251);
dvojité a, b, c; // proměnné typu double
cout<< “Input A = »; cin>>a; //vstup a
b=ceil(a); //zadání oceněno
cout<< «Большее целое число A = „<
Výstup programu:
Zvyšte číslo na mocninu dané hodnoty
#include // I/O knihovna
#zahrnout
#zahrnout
#zahrnout
pomocí jmenného prostoru std;
SetConsoleOutputCP(1251);
dvojité a,b; // proměnné typu double
cout<< “Введите число = »; cin>>a;
cout<< «Введите степень = »; cin>>b;
cout<< «Число в степени = „<
Výstup programu:
Řešení kvadratické rovnice
#zahrnout
# include # include
pomocí jmenného prostoru std;
dvojité a = 1, b = 2, c = 1;
i = gsl_poly_solve_quadratic(a, b, c, &x0, &x1);
jestliže (i == 2) cout<< “x0 =»<< x0 << " x1 ="<< x1 << endl;
jestliže (i == 1) cout<< «x0 = » << x0 << endl;
if (i == 0) cout<< «No solve » << endl;
Výstup programu:
Jak používat statistické funkce
#zahrnout
#zahrnout
dvojitá data = (17,2, 18,1, 16,5, 18,3, 12,6);
dvojitý průměr, rozptyl, největší, nejmenší;
průměr = gsl_stats_mean(data, 1, 5);
rozptyl = gsl_stats_variance(data, 1, 5);
největší = gsl_stats_max(data, 1, 5);
nejmenší = gsl_stats_min(data, 1, 5);
printf("Datový soubor je \%g, \%g, \%g,\%g, \%g\n",
data, data, data, data, data);
printf("Ukázkový průměr je \%g\ n", průměr);
printf("Odhadovaný rozptyl je \%g\ n", rozptyl);
printf("Největší hodnota je \%g\n", největší);
printf("Nejmenší hodnota je \%g\n", nejmenší);
Struktura C programu
1. #zahrnout
2. #zahrnout
3 . pomocí jmenného prostoru std – použít standardní jmenný prostor
4. int main(int argc, char *argv)– název funkce. Jakýkoli program v jazyce C se skládá z jedné nebo více funkcí. V psané šabloně je pouze jedna funkce - hlavní(). Funkce s názvem hlavní musí být určitě in jakýkoli spustitelný program .
5. { - začátek funkčního těla
6. systém („pauza“) – volání funkce Systém s argumentem "pauza". Funkce čeká na stisknutí tlačítka.
7. operátor vrátit se s argumentem EXIT_SUCCESS– ukončení hlavní funkce kódem 0.
8. ) – konec funkce hlavní.
Jednoduché datové typy C
Pro reprezentaci celočíselných hodnot v C jsou k dispozici následující datové typy:
Zadejte char. V paměti zabírá 1 bajt. Používá se k reprezentaci znaků a celých čísel od 0 do 255 (-128 až 127).
Zadejte int. Zabírá 4 bajty v paměti. Používá se k reprezentaci celých čísel v rozsahu -2,147,483,648 až 2,147,483,647.
Typ float. Zabírá 4 bajty v paměti. Používá se k reprezentaci čísel s pohyblivou řádovou čárkou. od 3,4×10-38 do 3,4×1038. Přesnost výpočtu až na 7 desetinných míst.
Typ double. V paměti zabírá 8 bajtů. Používá se k reprezentaci čísel s pohyblivou řádovou čárkou. od 1,7×10 -308 do 1,7×10 308. Přesnost výpočtu až na 15 desetinných míst.
typ neplatné – prázdný typ. Používá se k popisu funkcí.
Zadejte bool – logický typ. Může nabývat 2 hodnot: true nebo false.
Základní C operátory
Operátor je token, který přepíná některé výpočty při aplikaci na proměnnou nebo jiný objekt ve výrazu. Jazyk C představuje velkou sadu aritmetických a logických operátorů.
Tabulka 4.1. Unární operátory jazyka C
Tabulka 4.2. Binární operátory v jazyce C
Kód operátora | název | Výsledek operace | ||
Aditivní operátory | ||||
+ | binární plus | výpočet součtu např.: int x = 2,y = 1,z; z = x+y; | ||
- | binární mínus | výpočet rozdílu např.: int x = 2,y = 1,z; z = x-y; | ||
Multiplikativní operátory | ||||
* | násobení | výpočet součinu, například: int x = 2,y = 1,z; z = x*y; | ||
/ | divize | výpočet podílu, například: int x = 12,y = 2,z; z = x/y; | ||
% | zbytek | výpočet zbytku dělení, například: int x = 12,y = 7,z; z = x%y; | ||
Logické operátory | ||||
&& | logické AND | kontrola logických podmínek AND | ||
|| | logické NEBO | kontrola logických podmínek NEBO | ||
Operátoři přiřazení | ||||
= | úkol | přiřadit danou hodnotu proměnné nebo hodnotu jiné proměnné | ||
Relační operátory | ||||
< | méně než | X | ||
> | více než | x>y, x je větší než y | ||
<= | menší nebo rovno | X<=y, x меньше или равно y | ||
>= | větší nebo rovno | x>=y, x větší nebo rovno y | ||
Ekvivalenční operátory | ||||
= = | rovná se | x= =y, x se rovná y | ||
!= | ne rovné | x!=y, x se nerovná y | ||
, | operátor výčtu | provádět operace oddělené operátory zleva doprava, například y+=5,x-=4,y+=x; | ||
Knihovna matematických funkcí math.h
C podporuje mnoho matematických funkcí, jejichž prototypy jsou popsány v souboru matematika.h. Pojďme se s některými z nich seznámit.
abs(int x) vrátí modul celého čísla X. acos (dvojité x) vrátí arkus cosinus čísla X v radiánech . asin (dvojité x) vrátí arkussinus čísla X v radiánech. atan (dvojité x) vrátí arkustangens čísla X v radiánech. atof(char *s, double x) převede řetězec s na skutečné číslo X. cos (dvojité x) vrátí kosinus čísla X(X udáváno v radiánech) strop (dvojité x) zaokrouhlí číslo X nahoru exp (dvojité x) vrátí exponent čísla X. skvělé (dvojité x) vrací modul reálného čísla X. hřích (dvojité x) vrátí sinus čísla X(X udává se v radiánech). sqrt (dvojité x) vrátí druhou mocninu čísla X. opálení (dvojité x) vrátí tangens čísla X(X udává se v radiánech). | patro (dvojité x) zaokrouhlí číslo X dolů fmod(dvojité x, dvojité y) vrátí zbytek po dělení čísla X za číslo y hipot (dvojité x, dvojité y) vrátí druhou mocninu součtu čísla X a čísla y log (dvojité x) vrátí přirozený logaritmus čísla X. log10 (dvojité x) vrátí dekadický logaritmus čísla X. modf(double x,double&y) vrátí zlomkovou část čísla X, podle adresy y zapíše se celá část původního čísla X. pow (dvojité x, dvojité y) se vrací X do určité míry y |
Chcete-li používat všechny výše uvedené funkce, připojte knihovnu
Pozastavte AdBlock na tomto webu.
Matematické výpočty se neomezují pouze na aritmetické operace. Kromě nich zde můžete najít také kořeny, moduly, logaritmy, goniometrické funkce atd. Pojďme se naučit takové funkce používat v našich programech.
Chcete-li používat matematické funkce, musíte zahrnout hlavičkový soubor math.h . Definuje mnoho různých funkcí, ale nyní se podíváme na následující:
Některé matematické funkce
fabs(x) modul čísla x
sqrt(x) druhá odmocnina čísla x
sin(x) sinus z x (x v radiánech)
cos(x) kosinus x (x v radiánech)
pow(x, y) výpočet x y
exp(x) výpočet e x
log(x) přirozený logaritmus x
log10(x) dekadický logaritmus x
Dva důležité body.
- Všechny funkce vracejí dvojnásobnou hodnotu.
- Parametry funkce jsou reálná čísla (double), ale můžete předávat i celá čísla. To se stane implicitní konverze typu. Kompilátor vytvoří reálné číslo 3.0 z celého čísla, například 3.
Příklady.
Jsou uvedeny délky ramen pravoúhlého trojúhelníku. Vypočítejte délku přepony. Jednoduchý problém, který prověří vaše znalosti Pythagorovy věty.
Výpis 1.
#zahrnout
Vypočítejte sinus úhlu zadaného z klávesnice. Úhel se zadává ve stupních.
Výpis 2.
#zahrnout
V tomto programu je o čem mluvit. Goniometrické funkce, které jsou definovány v math.h, pracují s mírami radiánových úhlů. Lidé jsou více zvyklí pracovat s tituly. Proto jsme v tomto programu nejprve převedli hodnotu ze stupňů na radiány. Pokud tak neučiníte, výsledek bude nesprávný. Přesvědčte se o tom sami.
Konverze implicitního typu
Při provádění explicitní konverze typu jsme v závorkách před hodnotou uvedli typ, na který má být hodnota přetypována. Při implicitní konverzi to není nutné. Kompilátor automaticky vybere požadovaný typ.
Konverze implicitního typu se provádí v následujících případech:
- před předáním argumentů funkci (jako v našem příkladu root. Výpis 1.)
- provádění aritmetických operací s různými typy argumentů
- před provedením úkolu
Implicitní pravidla převodu typů
- pokud jsou aritmetické operace prováděny s různými typy argumentů. Oba argumenty jsou přetypovány na větší typ.
Typové pořadí: int< float < double - při přidělení. Hodnota napravo od operátoru přiřazení je přetypována na typ proměnné nalevo od operátoru přiřazení. Pokud je však větší typ přiřazen menšímu, může dojít ke ztrátě přesnosti.
int+float bude automaticky převeden na float+float
float/int bude automaticky převeden na float/float
double*float bude převeden na double*double
int = double double bude převedeno na int se ztrátou zlomkové části
float = int int bude převeden na float
Poslední aktualizace: 31. 10. 2015
Třída Math je navržena k provádění různých matematických operací v knihovně tříd .NET. Je statický, takže všechny jeho metody jsou také statické.
Podívejme se na metody třídy Math:
Abs(double value) : Vrátí absolutní hodnotu argumentu value
Dvojitý výsledek = Math.Abs(-12,4); // 12.4
Acos(dvojitá hodnota) : Vrací arkus cosinus hodnoty. Parametr value musí mít hodnotu mezi -1 a 1
Dvojitý výsledek = Math.Acos(1); // 0
Asin(dvojitá hodnota) : Vrací úhlový sinus hodnoty. Parametr value musí mít hodnotu mezi -1 a 1
Atan(dvojitá hodnota) : vrátí arkustangens hodnoty
BigMul(int x, int y) : vrátí součin x * y jako dlouhý objekt
Dvojitý výsledek = Math.BigMul(100, 9340); // 934000
Ceiling(double value) : vrací nejmenší celé číslo s pohyblivou řádovou čárkou, které není menší než hodnota
Dvojitý výsledek = Math.Ceiling(2,34); // 3
Cos(double d) : vrací kosinus úhlu d
Cosh(double d) : vrací hyperbolický kosinus úhlu d
DivRem(int a, int b, out int výsledek) : vrátí výsledek dělení a/b a zbytek se umístí do parametru result
Int výsledek; int div = Math.DivRem(14, 5, mimo výsledek); //výsledek = 4 // div = 2
Exp(double d) : Vrátí základnu přirozeného logaritmu umocněnou na d
Spodní (desetinné d) : vrátí největší celé číslo, které není větší než d
Dvojitý výsledek = Math.Floor(2,56); // 2
IEEERemainder(double a, double b) : vrátí zbytek a děleno b
Dvojitý výsledek = Math.IEEERemainder(26, 4); // 2 = 26-24
Log(double d) : vrací přirozený logaritmus d
Log(double a, double newBase) : vrátí logaritmus čísla na základě newBase
Log10(double d) : Vrátí dekadický logaritmus d
Max(double a, double b) : vrátí maximální počet mezi a a b
Min(double a, double b) : vrátí minimální číslo mezi a a b
Pow(double a, double b) : vrátí číslo a umocněné na b
Round(double d) : Vrátí d zaokrouhlené na nejbližší celé číslo
Dvojitý výsledek1 = Math.Round(20,56); // 21 double vysledek2 = Math.Round(20.46); //20
Round(double a, round b) : Vrátí číslo a zaokrouhlené na zadaný počet desetinných míst reprezentovaný b
Dvojitý výsledek1 = Math.Round(20,567; 2); // 20,57 dvojitý výsledek2 = Math.Round(20,463; 1); //20.5
Sign(double value) : Vrátí 1, pokud je hodnota kladná, a -1, pokud je záporná. Pokud je hodnota 0, vrátí 0
Int vysledek1 = Math.Sign(15); // 1 int vysledek2 = Math.Sign(-5); //-1
Sin(dvojitá hodnota) : vrací sinus hodnoty úhlu
Sinh(dvojitá hodnota) : vrací hyperbolický sinus hodnoty úhlu
Sqrt(dvojitá hodnota) : vrací druhou odmocninu hodnoty
Dvojitý výsledek1 = Math.Sqrt(16); // 4
Tan(dvojitá hodnota) : vrací tangens hodnoty úhlu
Tanh(dvojitá hodnota) : vrací hyperbolický tangens hodnoty úhlu
Truncate(double value) : zahodí zlomkovou část hodnoty a vrátí pouze celočíselnou hodnotu
Dvojitý výsledek = Math.Truncate(16,89); // 16
Třída Math také definuje dvě konstanty: Math.E a Math.PI. Vypočítejme například plochu kruhu:
Console.WriteLine("Zadejte poloměr kruhu"); dvojitý poloměr = Double.Parse(Console.ReadLine()); dvojitá plocha = Math.PI * Math.Pow(poloměr, 2); Console.WriteLine("Oblast kruhu s poloměrem (0) je (1)", poloměr, plocha);
Výstup konzole:
Zadejte poloměr kruhu 20 Oblast kruhu s poloměrem 20 je 1256,63706143592