Запись функций
Запись функций для фракталов мало отличается от математических формул или записей, используемых в различных языках программирования.
Например, квадратичную функцию, которую часто используют для иллюстрации множества Жюлиа, можно записать как 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)
.
Для изменения порядка вычисления можно использовать скобки — круглые ()
, квадратные []
или фигурные {}
.