Глава 2. Синтаксис

В KAlgebra для ввода пользовательских функций используется интуитивно понятный алгебраический синтаксис, похожий на тот, который применяется в большинстве современных графических калькуляторов. В этом разделе перечислены основные встроенные операции, доступные в KAlgebra. Автор KAlgebra взял за основу синтаксис программ Maxima и Maple, что упростит работу знакомым с ними пользователям.

Внутренняя служба преобразует введённые пользователем выражения в формат MathML — пользователи, которые обладают начальными знаниями о поддерживаемых MathML возможностях, при желании смогут разобраться во внутреннем устройстве KAlgebra.

Вот список доступных в этой версии операций:

  • + - * / : Сложение, вычитание, умножение и деление.

  • ^, ** : Возведение в степень. Возможно использовать символы Unicode — ² и так далее. Операция взятия корня обратна операции возведения в степень: a**(1/b)

  • -> : лямбда. Способ указать одну или несколько свободных переменных, которые будут связаны в функции. Например, в выражении length:=(x,y)->(x*x+y*y)^0.5 лямбда-оператор позволяет обозначить, что переменные x и y будут связаны при использовании функции length.

  • x=a..b : Эта конструкция используется, если нужно задать диапазон значений переменной (связанная переменная + ограничение снизу + ограничение сверху). Это означает, что x изменяется в интервале от a до b.

  • () : Скобки используются для явного задания приоритета вычислений.

  • abc(параметры) : Функции. В роли abc может быть згнак оператора или имя функции.

  • := : Определение. Задаёт значение переменной. Допустимы выражения наподобие x:=3, x:=y (даже если y не определена), perimeter:=r->2*pi*r.

  • ? : Условный оператор для задания кусочно-заданных функций в KAlgebra. Другими словами, это способ указания условия «if», «elseif», «else». Если указать условие перед знаком «?», то следующее за ним значение будет использовано только в том случае, если условие выполняется, а если перед «?» не будет условия, будет использовано предыдущее условие. Пример: piecewise { x=0 ? 0, x=1 ? x+1, ? x**2 }

  • { } : Блок MathML. Позволяет указывать произвольный код на MathML внутри. Полезно для работы с кусочно-заданными функциями.

  • = > >= < <= : Операции сравнения «равно», «больше», «больше или равно», «меньше», «меньше или равно».

Зачем вообще использовать блок MathML? Ответ прост. С его помощью возможно выполнять операции наподобие cos(), sin() и любые тригонометрические функции, sum() и product(). Характер самой функции не важен. Возможно использовать plus() (сложение), times() (умножение) и любые другие функции, которым соответствует определённый оператор. Также реализованы булевские функции, что позволяет выполнять операции наподобие or(1,0,0,0,0).