суббота, 23 мая 2015 г.

Julia. Функции

Естественно, в арсенале Julia имеется джентльменский набор основных элементарных функций.
abs(x) - модуль числа,
abs2(x) - квадрат модуля,
sqrt(x) - квадратный корень,
cbrt(x) - кубический корень,
exp(x) - экспонента числа,
log(x) - натуральный логарифм,
log10(x) - десятичный логарифм,
log(b,x) - логарифм x по основанию b.
Основные тригонометрические функции имеют вид sin(x), cos(x), tan(x), cot(x), sec(x), csc(x).
"a" + имя = обратная функция (напр. asin(x))
имя + "d" = функция, работающая с градусами (напр. cosd(x))
имя + "h" = гиперболическая функция (напр. tanh(x))
Кроме того, Julia вычисляет широкий спектр специальных функций, таких как функции Бесселя, Эйри и другие.


Теперь поговорим о пользовательских функциях. Они объявляются в виде
function имя(аргументы)
   тело функции
end
В отличие от Matlab-подобных программ здесь не нужно записывать выражения типа "имя_функции = значение" чтобы показать, что является результатом, т.к. функция возвращает результат последнего выражения.
В некоторых случаях можно явно указать возвращаемый результат, например при ветвлении.
Возвращаемых значений может быть несколько. В этом случае, они должны быть объединены в кортеж. Что это такое, поговорим как-нибудь в другой раз, а сейчас достаточно понимать, что это список величин, перечисленный через запятую и обычно (но не обязательно) записанный в скобках. Так вот, если нужно вернуть одновременно несколько значений, просто перечислите их через запятую. Результат можно присвоить картежу переменных или же работать с ним как с единым целым.
Иногда функция должна обрабатывать заранее неизвестное количество аргументов. В этом случае после последнего аргумента в списке нужно поставить многоточие. Например, запись "function g(x, y, z...)" будет означать, что функция имеет 3 входных параметра, из них 2 (x, y) - одиночные переменные, а последний - кортеж.

Если несколько аргументов функции допускают использование значений по умолчанию, вы можете указать их при объявлении функции. Только не забывайте, что такие аргументы должны стоять в конце списка.
Другой способ сделать определение функции более гибким - использование ключевых слов. Это может быть полезно, когда функция имеет много параметров, но не все из них требуется каждый раз менять. Такие параметры отделяются от основных через знак ";" и записываются со значением по умолчанию, а при вызове функции необходимо явно указать, какой аргумент задаётся.
Что ещё полезно знать о функциях в Julia... Так же, как и переменные, имена функций могут быть записаны на любом языке, доступном из Unicode-а. Если после имени функции отсутствуют скобки, оно рассматривается как переменная и может быть присвоено другой переменной или передано в функцию как параметр. Вы также можете создавать и анонимные (безымянные) функции, либо с помощью традиционной записи (через function), либо оператором "->". Такая форма представления часто используется с функциями map() или apply()... Вообще, те, кто знаком с функциональным программированием, уже поняли, вероятно, что Julia поддерживает и функциональный стиль написания программ.

Комментариев нет:

Отправить комментарий