Математические функции

Наиболее востребованные математические функции, как правило, встроены тем или иным образом во все современные языки программирования, и MQL5 — не исключение. В этой главе мы познакомимся с несколькими группами функций, доступных, что называется, "сразу из коробки". К ним относятся функции округления, тригонометрические, гиперболические, показательные, логарифмические, степенные функции, а также несколько специальных, таких как генерация случайных чисел и проверка вещественных чисел на нормальность.  

Большинство функций имеет два названия: полное (с приставкой "Math", с капитализацией слов) и сокращенное (без приставки, строчными буквами). Мы укажем оба варианта: они работают одинаково. Выбор можно сделать, исходя из стиля оформления исходных кодов.

Поскольку математические функции выполняют некие вычисления и возвращают результат в виде вещественного числа, потенциальные ошибки способны приводить к ситуации, когда результат не определен. Например, нельзя получить квадратный корень из отрицательного числа или логарифм от нуля. В таких случаях функции возвращают специальные величины, не являющиеся числами (NaN, Not A Number). Мы уже знакомились с ними в разделах Вещественные числа, Арифметические операции и Числа в строки и обратно. Проанализировать корректность числа и отсутствие ошибок позволяют функции MathIsValidNumber и MathClassify (см. раздел Проверка вещественных чисел на нормальность).

Наличие хотя бы одного операнда со значением NaN приведет к тому, что любые последующие вычисления с ним, включая вызовы функций, также будут давать результат NaN.

В качестве задания для самостоятельного изучения и наглядного материала к данной главе прилагается скрипт MathPlot.mq5, который позволяет отображать графики математических функций с одним аргументом из числа описываемых. Скрипт использует в своей работе стандартную библиотеку для рисования Graphic.mqh, поставляемую с MetaTrader 5 (она выходит за рамки данной книги). Ниже приведен образец того, как может выглядеть кривая гиперболического синуса в окне MetaTrader 5.

График гиперболического синуса

График гиперболического синуса в окне MetaTrader 5