C++ предоставляет большое количество математических функций, которые можно использовать непосредственно в программе. Будучи подмножеством языка C, C++ получает большинство этих математических функций из заголовка math.h языка C.
В C++ математические функции включены в заголовок <cmath>.
Таблица математических функций C++
Ниже приведен список важных математических функций в C++ вместе с их описанием, прототипом и примером.
№ | Функция | Прототип | Описание | Пример |
Тригонометрические функции | ||||
1 | cos | double cos (double x); | Возвращает косинус угла x в радианах. | cout<< cos ( 60.0 * PI / 180.0 ); (here PI = 3.142) **returns 0.540302 |
2 | sin | double sin(double x); | Возвращает синус угла x в радианах. | cout<< sin ( 60.0 * PI / 180.0 ); (here PI = 3.142) **returns 0.841471 |
3 | tan | double tan (double x); | Возвращает тангенс угла x в радианах. | cout<< tan ( 45.0 * PI / 180.0 ); (here PI = 3.142) **returns 0.931596 |
4 | acos | double acos (double x); | Возвращает арккосинус угла x в радианах. ** Арккосинус — это арккосинус операции косинуса. |
double param = 0.5; cout<< acos (param) * 180.0 / PI; (here PI = 3.142) **returns 62.8319 |
5 | asin | double asin(double x); | Возвращает арксинус угла x в радианах. ** Арксинус — это арксинус операции sin. |
double param = 0.5; cout<< asin (param) * 180.0 / PI; (here PI = 3.142) **return 31.4159 |
6 | atan | double atan (double x); | Возвращает арктангенс угла x в радианах. **Арктангенс — это арктангенс операции тангенса. | double param = 1.0; cout<< atan (param) * 180.0 / PI; (here PI = 3.142) **returns 47.1239 |
Силовые функции | ||||
7 | pow | double pow (double base, double exponent); | Возвращает основание, возведенное в степень экспоненты. | cout<<”2^3 = “<< pow(2,3); **returns 8 |
8 | sqrt | double sqrt(double x); | Возвращает квадратный корень из x. | cout<< sqrt(49); ** returns 7 |
Функции округления и остатка | ||||
9 | ceil | double ceil (double x); | Возвращает наименьшее целое значение, которое не меньше x; Округляет x в большую сторону. | cout<< ceil(3.8); **returns 4 |
10 | floor | double floor (double x); | Возвращает большее целое значение, которое не больше x; Округляет x в меньшую сторону. | cout<< floor(2.3); **returns 2 |
11 | fmod | double fmod (double numer, double denom); | Возвращает остаток от числа/знаменателя с плавающей запятой. | cout<< fmod(5.3,2); **returns 1.3 |
12 | trunc | double trunc (double x); **also provides variations for float and long double |
Возвращает ближайшее целочисленное значение, не превышающее x. Округляет x до нуля. | cout<< trunc(2.3); **returns 2 |
13 | round | double round (double x); **also provides variations for float and long double |
Возвращает целочисленное значение, ближайшее к x. | cout<< round(4.6); **returns 5 |
14 | remainder | double remainder (double numer, double denom); **also provides variations for float and long double |
Возвращает остаток от числа/знаменателя с плавающей запятой, округленный до ближайшего значения. | cout<< remainder(18.5 ,4.2); **returns 1.7 |
Минимум, максимум, разность и абсолютные функции | ||||
15 | fmax | double fmax (double x, double y). **also provides variations for float and long double. |
Возвращает большее значение аргументов x и y. Если одно число равно NaN, возвращается другое. | cout<< fmax(100.0,1.0); **returns 100 |
16 | fmin | double fmin (double x, double y); **also provides variations for float and long double. |
Возвращает меньшее значение аргументов x и y. Если одно число равно NaN, возвращается другое. | cout<< fmin(100.0,1.0); **returns 1 |
17 | fdim | double fdim (double x, double y); **also provides variations for float and long double. |
Возвращает положительную разницу между x и y. Если x > y, возвращает x-y; в противном случае возвращает ноль. | cout<< fdim(2.0,1.0); **returns 1 |
18 | fabs | double fabs(double x); | Возвращает абсолютное значение x. | cout<< fabs(3.1416); **returns 3.1416 |
19 | abs | double abs ( double x); **also provides variations for float and long double. |
Возвращает абсолютное значение x. | cout<< abs(3.1416); **returns 3.1416 |
Экспоненциальные и логарифмические функции | ||||
20 | exp | double exp (double x); | Возвращает экспоненциальное значение x, т.е. e x. | cout<< exp(5.0); **returns 148.413 |
21 | log | double log (double x); | Возвращает натуральный логарифм x. (к основанию e). | cout<< log(5); **returns 1.60944 |
22 | log10 | double log10 (double x); | Возвращает общий логарифм x (по основанию 10). | cout<< log10(5); **returns 0.69897 |
Программа C++, которая демонстрирует все функции, описанные выше:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <iostream> #include <cmath> using namespace std; int main () { int PI = 3.142; cout<< "cos(60) = " << cos ( 60.0 * PI / 180.0 )<<endl; cout<< "sin(60) = " << sin ( 60.0 * PI / 180.0 )<<endl; cout<< "tan(45) = " << tan ( 45.0 * PI / 180.0 )<<endl; cout<< "acos(0.5) = " << acos (0.5) * 180.0 / PI<<endl; cout<< "asin(0.5) = " << asin (0.5) * 180.0 / PI<<endl; cout<< "atan(1.0) = " << atan (1.0) * 180.0 / PI<<endl; cout<< "2^3 = " << pow(2,3)<<endl; cout<< "sqrt(49) = " << sqrt(49)<<endl; cout<< "ceil(3.8) = " << ceil(3.8)<<endl; cout<< "floor(2.3) = " << floor(2.3)<<endl; cout<< "fmod(5.3,2) = " << fmod(5.3,2)<<endl; cout<< "trunc(5.3,2) = " << trunc(2.3)<<endl; cout<< "round(4.6) = " << round(4.6)<<endl; cout<< "remainder(18.5,4.2) = " << remainder(18.5 ,4.2)<<endl; cout<< "fmax(100.0,1.0) = " << fmax(100.0,1.0)<<endl; cout<< "fmin(100.0,1.0) = " << fmin(100.0,1.0)<<endl; cout<< "fdim(2.0,1.0) = " << fdim(2.0,1.0)<<endl; cout<< "fabs(3.1416) = " << fabs(3.1416)<<endl; cout<< "abs(3.1416) = " << abs(3.1416)<<endl; cout<< "log(5) = " << log(5)<<endl; cout<< "exp(5.0) = " << exp(5.0)<<endl; cout<< "log10(5) = " << log10(5)<<endl; return 0; } |
Вывод данных:
cos(60) = 0.540302 sin(60) = 0.841471 tan(45) = 0.931596 acos(0.5) = 62.8319 asin(0.5) = 31.4159 atan(1.0) = 47.1239 2^3 = 8 sqrt(49) = 7 ceil(3.8) = 4 floor(2.3) = 2 fmod(5.3,2) = 1.3 trunc(5.3,2) = 2 round(4.6) = 5 remainder(18.5,4.2) = 1.7 fmax(100.0,1.0) = 100 fmin(100.0,1.0) = 1 fdim(2.0,1.0) = 1 fabs(3.1416) = 3.1416 abs(3.1416) = 3.1416 log(5) = 1.60944 exp(5.0) = 148.413 log10(5) = 0.69897 |
В приведенной выше программе мы выполнили математические функции, которые мы свели в таблицу выше, вместе с их соответствующими результатами.
Далее мы обсудим некоторые важные математические функции, используемые в C++.
Abs => Вычисляет абсолютное значение заданного числа.
Sqrt => Используется для нахождения квадратного корня из заданного числа.
Pow => Возвращает результат путем увеличения базы до заданного показателя степени.
Fmax => Находит максимальное из двух заданных чисел.
Далее, мы подробно обсудим каждую функцию, приведя соответствующие примеры. Мы также узнаем больше о математической константе M_PI, которая часто используется в количественных программах.
Abs
Прототип функции: return_type abs (data_type x);
Параметры функции: x=> значение, абсолютное значение которого должно быть возвращено.
х может быть следующих типов:
- double
- float
- long double
Возвращаемое значение: возвращает абсолютное значение x.
В качестве параметров возвращаемое значение также может быть следующих типов:
- double
- float
- long double
Описание: Функция abs используется для возврата абсолютного значения параметра, переданного в функцию.
Пример программы:
1 2 3 4 5 6 7 8 9 |
#include <iostream> #include <cmath> using namespace std; int main () { cout << "abs (10.57) = " << abs (10.57) << '\n'; cout << "abs (-25.63) = " << abs (-25.63) << '\n'; return 0; } |
Вывод данных:
abs (10.57) = 10.57 abs (-25.63) = 25.63 |
В этой программе мы использовали примеры с положительным и отрицательным числом с функцией abs для большей ясности.
Sqrt
Прототип функции: double sqrt (двойной x);
Параметры функции: x=>значение, квадратный корень которого необходимо вычислить.
Если x отрицательное, возникает ошибка домена domain_error.
Возвращаемое значение: двойное значение, указывающее квадратный корень из x.
Если x отрицательное, возникает ошибка домена domain_error.
Описание: Функция sqrt принимает число в качестве параметра и вычисляет квадратный корень. Если аргумент отрицательный, возникает ошибка домена. Когда происходит ошибка домена, глобальная переменная errno устанавливается в EDOM.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> #include <cmath> using namespace std; int main () { double param, result; param = 1024.0; result = sqrt (param); cout<<"Square root of "<<param<<"(sqrt("<<param<<")):"<<result<<endl; param = 25; result = sqrt (param); cout<<"Square root of "<<param<<"(sqrt("<<param<<")):"<<result<<endl; return 0; } |
Вывод данных:
Square : root of 1024(sqrt(1024)):32 Square root of 25(sqrt(25)):5 |
В приведенной выше программе мы вычислили квадратный корень из 1024 и 25, используя функцию sqrt.
Pow
Прототип функции: double pow (double base, double exponent).
Параметры функции: base=> базовое значение.
Exponent => значение экспоненты
Возвращаемое значение: значение, полученное после возведения основания в степень.
Описание: Функция pow принимает два аргумента, т.е. основание и показатель степени, а затем возводит основание в степень показателя степени.
Если основание отрицательно, и показатель степени отрицателен, но не является целым числом, возникает ошибка домена. Некоторые реализации могут вызывать ошибку домена, когда и основание, и показатель степени равны нулю, а также если основание равно нулю, а показатель степени отрицателен.
Если результат функции слишком мал или слишком велик для возвращаемого типа, это может привести к ошибке диапазона.
Пример:
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> #include <cmath> using namespace std; int main () { cout<< "2 ^ 4 = "<<pow (2.0, 4.0)<<endl; cout<< "4 ^ 12 = "<< pow (4, 12.0)<<endl; cout<< "7 ^ 3 = "<< pow (7, 3); return 0; } |
Вывод данных:
2 ^ 4 = 16 4 ^ 12 = 1.67772e+07 7 ^ 3 = 343 |
Вышеприведенная программа демонстрирует использование функции POW в C++. Мы видим, что она вычисляет значение, возводя число в указанную степень.
Max
Прототип функции: double fmax (double x, double y);
Параметры функции: x, y=> два значения, которые нужно сравнить, чтобы найти максимум.
Возвращаемое значение: возвращает максимальное значение двух параметров.
Если одним из параметров является Nan, возвращается другое значение.
Описание: Функция fmax принимает два числовых аргумента и возвращает максимальное из двух значений. Помимо упомянутого выше прототипа, эта функция также имеет перегрузки для других типов данных, таких как float, long double и т. д.
Пример:
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream> #include <cmath> using namespace std; int main () { cout <<"fmax (100.0, 1.0) = " << fmax(100.0,1.0)<<endl; cout << "fmax (675, -675) = " << fmax(675.0, -675.0)<<endl; cout << "fmax (-100.0, -1.0) = " << fmax(-100.0,-1.0)<<endl; return 0; } |
Вывод данных:
fmax (100.0, 1.0) = 100 fmax (675,-675) = 675 fmax (-100.0, -1.0) = -1 |
В приведенном выше коде показано использование функции fmax для нахождения максимума двух чисел. Мы видим случаи, когда одно из чисел отрицательное, и оба числа отрицательные.
Математические константы в C++
Заголовок <cmath> в C++ также включает несколько математических констант, которые можно использовать в математическом и количественном коде.
Чтобы включить математические константы в программу, мы должны использовать директиву #define и указать макрос «_USE_MATH_DEFINES». Этот макрос нужно добавить в программу до того, как мы включим библиотеку <cmath>.
Это делается вот таким образом:
#define _USE_MATH_DEFINES #include <iostream> #include <cmath> ….C++ Code….. |
Одной из констант, которую мы часто используем при написании математических и количественных приложений, является PI. В следующей программе показано использование предопределенной константы PI в программе C++:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#define _USE_MATH_DEFINES #include <cmath> #include <iostream> using namespace std; int main() { double area_circle, a_circle; int radius=5; double PI = 3.142; //using predefined PI constant area_circle = M_PI * radius * radius; cout<<"Value of M_PI:"<<M_PI<<endl; cout << "Area of circle with M_PI : "<<area_circle << endl; //using variable PI a_circle = PI * radius * radius; cout<<"Value of variable PI:"<<PI<<endl; cout << "Area of circle with PI : "<<a_circle << endl; return 0; } |
Вывод данных:
Value of M PI: 3.14 4159 Area of circle with M PI : 78.5398 Value of variable PI:3.142 Area of circle with PI : 78.55 |
Вышеприведенная программа демонстрирует математическую константу M_PI, доступную в <cmath>. Мы также предоставили локальную переменную PI, инициализированную значением 3,142. Выходные данные показывают площадь круга, вычисленную с использованием M_PI и локальной переменной PI с использованием одного и того же значения радиуса.
Хотя между двумя вычисленными значениями площади нет большой разницы, часто желательно использовать PI в качестве локально определенной переменной или константы.
Итог
C++ использует различные математические функции, такие как abs, fmax, sqrt, POW и т. д., а также тригонометрические и логарифмические функции, которые можно использовать для разработки количественных программ. Мы рассмотрели некоторые важные функции в этой статье вместе с их примерами.
Мы также представили математическую константу M_PI, определяющую значение геометрической константы PI, которую можно использовать для вычисления различных формул.
C++ использует математические функции, включая заголовок <cmath> в программу. Эти функции предопределены, и нам не нужно определять их в нашей программе. Мы можем напрямую использовать эти функции в коде, что, в свою очередь, делает кодирование более эффективным.
С Уважением, МониторБанк