- Абсолютное значение числа
- Максимальное и минимальное из двух чисел
- Функции округления
- Деление чисел по модулю
- Степени и корни
- Показательные и логарифмические функции
- Тригонометрические функции
- Гиперболические функции
- Проверка вещественных чисел на нормальность
- Генерация случайных чисел
- Управление порядком байтов в целых числах
Тригонометрические функции
В MQL5 представлены 3 основных тригонометрических функции (MathCos, MathSin, MathTan) и обратные им (MathArccos, MathArcsin, MathArctan). Все они работают с углами в радианах. Для углов в градусах используйте известную формулу:
radians = degrees * M_PI / 180 |
Здесь M_PI — одна из нескольких констант с тригонометрическими величинами (число Пи и производные от него), встроенных в язык.
Константа |
Описание |
Значение |
---|---|---|
M_PI |
π |
3.14159265358979323846 |
M_PI_2 |
π/2 |
1.57079632679489661923 |
M_PI_4 |
π/4 |
0.785398163397448309616 |
M_1_PI |
1/π |
0.318309886183790671538 |
M_2_PI |
2/π |
0.636619772367581343076 |
Арктангенс можно также рассчитать для величины, представленной соотношением двух координат y и x: этот расширенный вариант называется MathArctan2, он способен восстанавливать углы в полном диапазоне окружности от -M_PI до +M_PI, в отличие от MathArctan, который ограничен диапазоном от -M_PI_2 до +M_PI_2.
Тригонометрические функции и квадранты единичного круга
Примеры расчетов приведены в скрипте MathTrig.mq5 (см. после описаний).
double MathCos(double value) ≡ double cos(double value)
double MathSin(double value) ≡ double sin(double value)
Функции возвращают, соответственно, косинус и синус переданного числа (угла в радианах).
double MathTan(double value) ≡ double tan(double value)
Функция возвращает тангенс переданного числа (угла в радианах).
double MathArccos(double value) ≡ double acos(double value)
double MathArcsin(double value) ≡ double asin(double value)
Функции возвращают значение, соответственно, арккосинуса и арксинуса переданного числа, то есть угол в радианах. Если x = MathCos(t), то t = MathArccos(x). Для синуса и арксинуса — аналогично. Если y = MathSin(t), то t = MathArcsin(y).
Параметр должен находиться в пределах от -1 до +1. В противном случае функция вернет NaN.
Результат арккосинуса лежит в диапазоне от 0 до M_PI, а арксинуса — от -M_PI_2 до +M_PI_2. Указанные диапазоны называются главными, поскольку функции являются многозначными, то есть их значения периодически повторяются. Выбранные полупериоды полностью покрывают область определения от -1 до +1.
Полученный угол для косинуса лежит в верхнем полукруге, и симметричное решение в нижнем полукруге может быть получено добавлением знака, то есть t = -t. Для синуса полученный угол находится в правом полукруге, и второе решение в левом полукруге равно M_PI - t (если для отрицательного t требуется получить также отрицательный дополнительный угол, то -M_PI - t).
double MathArctan(double value) ≡ double atan(double value)
Функция возвращает для переданного числа значение арктангенса, то есть угол в радианах, в диапазоне от -M_PI_2 до +M_PI_2.
Функция является обратной по отношению к MathTan, но с одним нюансом.
Обратите внимание, что период тангенса в 2 раза меньше полного периода (длины окружности) за счет того, что отношение синуса и косинуса повторяются в противоположных квадрантах (четвертях окружности) из-за наложения знаков. В результате этого, самого по себе значения тангенса недостаточно, чтобы однозначно определить исходный угол в полном диапазоне от -M_PI до +M_PI. Это можно сделать с помощью функции MathArctan2, в которой тангенс представлен двумя раздельными компонентами.
double MathArctan2(double y, double x) ≡ double atan2(double y, double x)
Функция возвращает в радианах значение угла, тангенс которого равен отношению двух указанных чисел: координат по оси y и по оси x.
Результат (обозначим его как r) лежит в диапазоне от -M_PI до +M_PI, причем для него выполняется условие MathTan(r) = y / x.
Функция принимает во внимание знак обоих аргументов, чтобы определить правильный квадрант (с учетом граничных условий, когда либо x, либо y равны 0, то есть находятся на границе квадрантов).
- 1 — x >= 0, y >= 0, 0 <= r <= M_PI_2
- 2 — x < 0, y >= 0, M_PI_2 < r <= M_PI
- 3 — x < 0, y < 0, -M_PI < r < -M_PI_2
- 4 — x >= 0, y < 0, -M_PI_2 <= r < 0
Ниже представлены результаты вызовов тригонометрических функций в скрипте MathTrig.mq5.
void OnStart()
|