Zobrazit stránkuStarší verzeZpětné odkazyNahoru Tato stránka je pouze pro čtení. Můžete si pouze prohlédnout zdrojový kód, ale ne ho měnit. Zeptejte se správce, pokud si myslíte, že něco není v pořádku. ====== Matematické funkce ====== C i C++ je jako většina programovacích jazyků vybavena knihovnou s nejběžnějšími matematickými funkcemi. Tyto funkce můžeme nalézt v knihovnách ''<math.h>'', ''<stdlib.h>'' pro jazyk C a v knihovnách ''<cmath>'', ''<cstdlib>'' pro jazyk C++. Zde pro přehled uvedeme ty nejpoužívanější z nich. ===== Absolutní hodnota - abs(), fabs(), std::abs() ===== Absolutní hodnota je funkce, která má v jazycích C/C++ dvě varianty: celočíselnou v knihovách ''<stdlib.h>''/''<cstdlib>'' a s plovoucí čárkou v knihovnách ''<math.h>''/''<cmath>''. V moderních implementacích (od C++17) stačí includovat pouze jednu z uvedených knihoven a lze pak používat funkci std::abs() jak pro datové typy s plovoucí čárkou, tak i celočíselné (je přetížená). === Ukázka použití funkcí abs() a fabs() (C implementace) === <code c> #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int x = -42; double y = 6.34; int ax = abs(x); double ay = fabs(ay); printf("|%d| = %d\n", x, ax); printf("|%f| = %f\n", y, ay); return 0; } </code> === Ukázka použití funkce std::abs() (C++17 implementace) === <code c> #include <cstdio> #include <cstdlib> #include <cmath> int main() { int x = -42; double y = 6.34; int ax = std::abs(x); double ay = std::abs(ay); std::printf("|%d| = %d\n", x, ax); std::printf("|%f| = %f\n", y, ay); return 0; } </code> ===== Mocnina - pow() ===== Pokud chceme například vypočítat jen X², stačí ''double xna2 = x * x;'' -- není třeba využívat sofistikovanou matematickou funkci. Pro složitější mocniny se hodí C funkce ''double pow(double zaklad, double exponent)'', případně ''float powf(float zaklad, float exponent)'' nebo plně přetížená C++11 funkce ''std::pow()'', která umožňuje operandy všech číselných typů, včetně různého typu mezi operandy. === Ukázka použití funkce pow() === <code c> #include <stdlib.h> #include <stdio.h> #include <math.h> int main() { double x = 2; double y = 6; double vysl = pow(x, y); printf("%f^%f = %lf\n", x, y, vysl); return 0; } </code> ===== Druhá odmocnina - sqrt() ===== Pro výpočet druhé odmocniny slouží knihovní funkce ''double sqrt(double cislo)'', případně ''float sqrtf(float cislo)'', nebo přetíženou funkci ''std::sqrt()''. Pro hledání odmocnin s vyšším odmocnitelem lze použít funkci ''pow()'' s exponentem ve formátu zlomku. === Ukázka použití funkce sqrt() === <code c> #include <stdlib.h> #include <stdio.h> #include <math.h> int main() { double x = 169; double vysl = sqrt(x); printf("Odmocnina z %f je %lf\n", x, vysl); return 0; } </code> ===== Konstanta PI ===== Aby jsme mohli použít knihovní konstantu pro číslo pi, pojmenovanou ''M_PI'' je třeba před samotným includováním matematické knihovny definovat symbol matematických konstant - viz ukázka. <code c> #include <stdlib.h> #include <stdio.h> #define _USE_MATH_DEFINES #include <math.h> int main() { printf("Pi = %f\n", M_PI); return 0; } </code> ===== Goniometrické funkce ===== Všechny goniometrické funkce v knihovně jazyka C pracují s **úhly v radiánech** v datovém typu double. Pokud je potřeba použít úhel v datovém typu float, lze na konec názvu funkce přidat //f// (cos -> cosf). Jako obvykle jsou k dispozici i přetížené funkce jazyka C++, které jsou uloženy v namespace ''std::''. ^ Matematická funkce ^ Funkce z knihovny ^ ^ Kosinus | ''cos(double rad)'' | ^ Sinus | ''sin(double rad)'' | ^ Tangens | ''tan(double rad)'' | ^ Arkus kosinus | ''acos(double cos)'' | ^ Arkus sinus | ''asin(double sin)'' | ^ Arkus tangens | ''atan(double tan)'' | Konkrétní rozsahy výstupních hodnot inverzních funkcí doporučujeme předem prostudovat v referenční příručce - viz Odkazy. ===== Odkazy ===== * [[http://www.cplusplus.com/reference/cmath/|Přehled knihovny <math.h>]] * [[https://en.cppreference.com/w/c/numeric/math|Common mathematical functions - C reference]] * [[https://en.cppreference.com/w/cpp/numeric/math|Common mathematical functions - C++ reference]] ccpp/math.txt Poslední úprava: 2023/11/15 08:00autor: bures