Использование функций

Синтаксис:

ИмяФункции(аргумент1, аргумент2, ...)

Пример:

Factorial(5)
cos(2*pi)
gcd(921,317)

Чтобы вычислить значение функции, введите имя функции, за которым следуют аргументы функции (если они имеются) в круглых скобках. Программа вернёт результат применения функции к её аргументам. Разумеется, число аргументов может быть разным для разных функций.

There are many built-in functions, such as sin, cos and tan. You can use the help built-in command to get a list of available functions, or see Глава 11, Список функций GEL for a full listing.

Использование автозавершения по клавише Tab

Можно использовать автозавершение по клавише Tab, чтобы Genius автоматически подставлял имена функций. Попробуйте набрать первые несколько букв имени и нажать Tab.

Имена функций чувствительны к регистру

Имена функций чувствительны к регистру символов. Это означает, что функции dosomething, DOSOMETHING и DoSomething — это разные функции.

Определение функций

Syntax:

function <identifier>(<comma separated arguments>) = <function body>
<identifier> = (`() = <function body>)

The ` is the backquote character, and signifies an anonymous function. By setting it to a variable name you effectively define a function.

A function takes zero or more comma separated arguments, and returns the result of the function body. Defining your own functions is primarily a matter of convenience; one possible use is to have sets of functions defined in GEL files that Genius can load in order to make them available. Example:

function addup(a,b,c) = a+b+c

then addup(1,4,9) yields 14

Variable Argument Lists

If you include ... after the last argument name in the function declaration, then Genius will allow any number of arguments to be passed in place of that argument. If no arguments were passed then that argument will be set to null. Otherwise, it will be a horizontal vector containing all the arguments. For example:

function f(a,b...) = b

Then f(1,2,3) yields [2,3], while f(1) yields a null.

Passing Functions to Functions

In Genius, it is possible to pass a function as an argument to another function. This can be done using either ‘function nodes’ or anonymous functions.

If you do not enter the parentheses after a function name, instead of being evaluated, the function will instead be returned as a ‘function node’. The function node can then be passed to another function. Example:

function f(a,b) = a(b)+1;
function b(x) = x*x;
f(b,2)

To pass functions that are not defined, you can use an anonymous function (see «Определение функций»). That is, you want to pass a function without giving it a name. Syntax:

function(<comma separated arguments>) = <function body>
`(<comma separated arguments>) = <function body>

Example:

function f(a,b) = a(b)+1;
f(`(x) = x*x,2)

This will return 5.

Операции с функциями

Some functions allow arithmetic operations, and some single argument functions such as exp or ln, to operate on the function. For example,

exp(sin*cos+4)

will return a function that takes x and returns exp(sin(x)*cos(x)+4). It is functionally equivalent to typing

`(x) = exp(sin(x)*cos(x)+4)

This operation can be useful when quickly defining functions. For example to create a function called f to perform the above operation, you can just type:

f = exp(sin*cos+4)

It can also be used in plotting. For example, to plot sin squared you can enter:

LinePlot(sin^2)

Предупреждение

Not all functions can be used in this way. For example, when you use a binary operation the functions must take the same number of arguments.