Запись функций
Запись функций для фракталов мало отличается от математических формул или записей, используемых в различных языках программирования.
Например, квадратичную функцию, которую часто используют для иллюстрации множества Жюлиа, можно записать как z*z + c или z^2 + c.
В записи функций могут присутствовать следующие элементы:
- переменная
z, которой присваивается вычисленное значение функции на каждой итерации; - числа;
- параметры;
- встроенные операции и функции.
Числа
Вещественные числа записываются как обычно; для разделения целой и дробной части числа используется точка: 4, 0.55, -2.3.
Комплексные числа записываются в формате <вещественная часть>(i|j)<мнимая часть>.
Мнимая единица в такой записи будет выглядеть как 0i1 или 0j1, а сопряженное ей комплексное число — как 0i-1 или 0j-1.
В большинстве случаев комплексные числа удобнее использовать не непосредственно, а в виде параметров.
Параметры
Параметры позволяют влиять на функцию, не редактируя ее код. Например, для квадратичной функции z*z + c
c — параметр, отвечающий за смещение при каждой итерации. При его изменении внешний вид фрактала будет плавно меняться:
Названия параметров могут быть большими или малыми латинскими буквами, например, c, k, A, Z.
Регистр букв учитывается, то есть C и c — различные параметры.
Бинарные операции
- +, -, *, /
- Сложение, вычитание, умножение и деление соответственно.
- ^
- Возведение в вещественную степень:
zn = |z|nein arg(z), где|z|— модуль комплексного числа,arg(z)— его аргумент.
Пример:(1.0+2.0i)^2 = -3.0+4.0i.
Функции общего назначения
- re
- Вещественная часть комплексного числа.
Пример:re(1.0+2.0i) = 1.0. - im
- Мнимая часть комплексного числа.
Пример:im(1.0+2.0i) = 2.0. - arg
- Аргумент комплексного числа в радианах:
arg(x + iy) = atan2(y, x).
Пример:arg(1.0+2.0i) = 1.1071. - mod
- Модуль комплексного числа:
mod(x + iy) = sqrt(x2 + y2).
Пример:mod(1.0+2.0i) = 2.2361. - exp
-
Экспонента комплексного числа:
exp(x + iy) = ex(cos y + i*sin y).
Пример:exp(1.0+2.0i) = -1.1312+2.4717i. - ln, log
- Натуральный логарифм:
ln(r*eiφ) = ln(r) + iφ.
Пример:ln(1.0+2.0i) = 0.8047+1.1071i.
Тригонометрические функции
- sinh, sh
- Гиперболический синус:
sinh(z) = (ez - e-z)/2.
Пример:sinh(1.0+2.0i) = -0.4891+1.4031i. - cosh, ch
- Гиперболический косинус:
cosh(z) = (ez + e-z)/2.
Пример:cosh(1.0+2.0i) = -0.6421+1.0686i. - tanh, th
- Гиперболический тангенс:
tanh(z) = sinh(z)/cosh(z).
Пример:tanh(1.0+2.0i) = 1.1667-0.2435i.
Обратные тригонометрические функции
- asinh
- Гиперболический арксинус — функция, обратная к
sinh.
Пример:asinh(1.0+2.0i) = 1.4694+1.0634i. - acosh
- Гиперболический арккосинус — функция, обратная к
cosh.
Пример:acosh(1.0+2.0i) = 1.5286+1.1437i. - atanh
- Гиперболический арктангенс — функция, обратная к
tanh.
Пример:atanh(1.0+2.0i) = 0.1733+1.1781i.
Примечание. Строго говоря, логарифм и обратные тригономертические функции являются многозначными, а в вычислениях используется их главная ветвь.
Приоритет операций
Приоритеты арифметических операций соответствуют здравому смыслу (т.е. возведение в степень выполняется до умножения и деления, а они, в свою очередь — до сложения и вычитания).
Арифметические операции с одинаковым приоритетом вычисляются слева направо (например, 1/2/2 = 0.25).
Унарные функции обладают высшим приоритетом: sinh z^2 эквивалентно (sinh z)^2, а не sinh(z^2).
Для изменения порядка вычисления можно использовать скобки — круглые (), квадратные [] или фигурные {}.