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

Элементарные функции

sqrt(x) - возвращает квадратный корень x или %null, если x<0.
pow(x,p) - возвращает значение x в степени p или %null, если значение нельзя вычислить.
exp(x) - возвращает экспоненту x.
ln(x) - возвращает натуральный логарифм x или %null, если x<=0.
log(x,b) - возвращает логарифм x по основанию b или %null, если x<=0.
cos(x) - возвращает косинус x.
sin(x) - возвращает синус x.
tan(x) - возвращает тангенс x.
arccos(x) - возвращает арккосинус x.
arcsin(x) - возвращает арксинус x.
arctan(x) - возвращает арктангенс x.
deg2rad(x) - переводит градусы в радианы .
rad2deg(x) - переводит радианы в градусы.
pi() - значение числа пи с точностью до 14 знаков.
mod(x,n) - возвращает остаток от деления x на n.
abs(x) - возвращает абсолютное значение x.
max(p1,p2,...,pN) - возвращает максимальное значение из списка параметров. Параметры могут быть скалярами или массивами произвольной размерности.
min(p1,p2,...,pN) - возвращает минимальное значение из списка параметров. Параметры могут быть скалярами или массивами произвольной размерности.
round(x,r) - округляет x до r дробных разрядов.
rand(a,b) - генерирует целое случайное число в диапазоне от a до b. Параметры можно не задавать.
rnd() - генерирует вещественное случайное число в диапазоне от 0 до 1.
randmax() - максимальное целое число, используемое при генерации целых случайных чисел функцией rand() без параметров.
not(x) - возвращает 1, если x имеет не пустое значение (x#%null, x#0, x#"", x не пустой массив) и 0 в противном случае.
neg(x) - возвращает -x
val(x,b) - если x является числом, то функция возвращает x. Если x начинается с символа =, то считается, что x - это выражение. Оно вычисляется и возвращается полученный результат. Если последний символ x - знак процента (%), а x без последнего символа - число, то возвращается x% от b.
fint(x,arg,val,mode) - возвращает значение таблично заданной функции в точке x. arg - массив значений аргументов; val - массив значений функции при соответствующих значениях аргументов. Оба массива могут быть заданы в виде строк, содержащих разделенные пробелами значения. Если mode=0, то функция вернет значение табличной функции в левой границе отрезка значений аргумента, в который попадает x. Если mode=1, то функция вернет результат линейной интерполяции в отрезке, в который попадает x. По умолчанию mode=1.

Функции поиска экстремумов функций и корней уравнений

fmax(expr,var,a,b,d) - вычисляет глобальный максимум функции, заданной выражением expr, относительно переменной, имя которой содержится в параметре var, на отрезке [a,b] с точностью d. Выражение в строке expr должно быть построено по правилам формирования выражений, принятом во встроенном языке и должно оперировать переменной с именем, записанном в параметре var функции fmax. По умолчанию d=0.01. Возвращает массив res следующей структуры:
res(var) - значение независимой переменной в точке максимума;
res('max') - значение максимума;
res('iter') - число итераций сужения интервала, выполненных при поиске решения.
Пусть задан следующий программный код:
y=fmax('x*sin(x)','x',0,2*pi(),0.001)
atree(y)
Результат:
$x=2.0287148719821
$max=1.8197057386638
$iter=6
fmin(expr,var,a,b,d) - вычисляет глобальный минимум функции, заданной выражением expr, относительно переменной, имя которой содержится в параметре var, на отрезке [a,b] с точностью d. Выражение в строке expr должно быть построено по правилам формирования выражений, принятом во встроенном языке и должно оперировать переменной с именем, записанном в параметре var функции fmin. По умолчанию d=0.01. Возвращает массив res следующей структуры:
res(var) - значение независимой переменной в точке минимума;
res('min') - значение минимума;
res('iter') - число итераций сужения интервала, выполненных при поиске решения.
Пусть задан следующий программный код:
y=fmin('x*sin(x)','x',0,2*pi(),0.001)
aprint(y)
Результат:
x:4.9131493173197 iter:6 min:-4.8144698871875
fmin может быть использована для поиска корня уравнения expr=0. Для этого нужно искать минимум абсолютной величины выражения expr на данном отрезке.
Пусть задан следующий программный код:
y=fmin('abs(x*sin(x))','x',pi()/2,3*pi()/2,0.001)
aprint(y)
Результат:
x:3.1415926535898 iter:6 min:3.8473413874436E-16
Если значение функции в точке минимума очень близко от нуля, то аргумент, в котором достигнут минимум - корень уравнения.
fxmax(modname,start,width,maxside,iter,trace) - поиск максимума функции произвольного числа аргументов методом направленного случайного поиска с направляющим гиперкубом. Параметры:
modname - имя модуля, вычисляющего значение функции. Получает массив, содержащий координаты точки. Должен проверить принадлежность точки множеству допустимых значений в случае условной оптимизации. Если точка не принадлежит множеству - должен вернуть %null. В противном случае модуль должен вернуть значение искомой функции в данной точке.
start - массив или число. Массив должен задавать начальную точку, с которой стартует поиск. По размерности массива определяется число аргументов функции. Может быть строкой значений, разделенных пробелами. Если задано число, то оно интерпретируется как число аргументов функции. В этом случае в качестве начальной точки выбирает точка с нулевыми координатами данной размерности.
width - массив или число. Массив должен задавать начальную ширину стороны гиперкуба по каждому измерению. Может быть строкой значений, разделенных пробелами. Если параметр - число, то все стороны начального гиперкуба принимаются равными этой величине.
maxside - число, определяющее точность вычислений, которые продолжаются до тех пор, пока максимальная по ширине сторона гиперкуба не станет меньше maxside. По умолчанию maxside=0.1
iter - число точек случайно выбираемых внутри гиперкуба. По умолчанию iter=100.
trace - Если trace=1, то выводит выводит промежуточные результаты по ходу выполнения. По умолчанию trace=1.
Алгоритм вычислений:
 1. Точка start принимается за центр гиперкуба. Начальным значением результата принимается значение функции в данной точке. Границами отрезка каждой координаты i является [start(i)-width(i)/2;start(i)+width(i)/2]
 2. Формируется iter случайных точек внутри гиперкуба. Если лучшее значение больше предыдущего, то координаты соответствующей точки переносятся в start и данная точка становится центром нового гиперкуба с той же длиной сторон. Если все полученные значения не лучше предыдущего максимума, то ширина каждой стороны гиперкуба уменьшается вдвое, а точка start не изменяется.
 3. Если длина максимальной стороны гиперкуба меньше, чем maxside, вычисления прекращаются. В противном случае итерации продолжаются с пункта 1.
Функция возвращает массив res следующей структуры:
res('val') - значение функции в точке максимума;
res('arg') - массив координат точки, в которой достигнут максимум.
Пример решения задачи условной оптимизации
Исходный код программы
fnmax - пока не использовать
fxest - пока не использовать

Системы счисления

decbin(x) - переводит десятичное число в двоичное
dechex(x) - переводит десятичное число в шестнадцатиричное
decoct(x) - переводит десятичное число в восьмеричное
octdec(x) - переводит восьмеричное в десятичное
hexdec(x) - переводит шестнадцатиричное число в десятичное
bin2hex(str) - преобразует бинарные данные, заданные строкой str, в шестнадцатиричное представление.
Команды первой позиции
Создание/Изменение узлов и документов
Статистические функции
Функции вычислений с датами и временем
Структура данных, навигация и основные манипуляции с данными