Операторы

Каждая переменная или константа характеризуется своим значением и принадлежит к какому-либо типу данных. С помощью операторов и круглых скобок из них можно составлять выражения, которые фактически представляют собой правила получения новых значений. В общем случае выражение состоит из нескольких элементов (операндов) и знаков операций (операторов), а тип его значения определяется типом операндов и видом применяемых к ним операций.

Если операции имеют равный приоритет, то они будут выполняться последовательно, слева направо.

Если приоритет операции выше, то она будет выполнена в первую очередь, независимо от расположения знака операции. В первую очередь вычисляются также выражения, заключенные в скобки, после чего они рассматриваются как операнды. В выражении (x>0) and (y>0) скобки необходимы, поскольку операции отношения имеют самый низкий приоритет.

Математические операторы

Операндами в арифметических операциях могут быть вещественные, комплексные и целые числа, массивы, матрицы, а также выражения соответствующих типов. Операции над матрицами определены в соответствии с правилами линейной алгебры, а операции над массивами выполняются поэлементно (в последнем случае размеры массивов должны совпадать). Массив воспринимается как вектор-строка. Вектор-столбец задается как матрица размером n´1, например A=[[1],[3],[2]]; либо как транспонированный массив: A=transp([1,3,2]);

Оператор Семантика Назначение и пример
+ "слагаемое 1"+"слагаемое 2" Сложение двух выражений. Для строк сложение соответствует конкатенации. Матрицы и вектора складываются поэлементно. Пример: 1+10
- "уменьшаемое"-"вычитаемое" Вычитание из первого выражения второго. Для строк не определено. Матрицы и вектора вычитаются поэлементно. Пример: 10+5

[1,1]+[5,7]

* "уменьшаемое"-"вычитаемое" "множитель 1"*"множитель 2" Пример: А*B
/ "делимое"/"делитель" Прямое деление первого выражения на второй. Вектора делятся поэлементно. Для матриц производится умножение на обратную матрицу. Пример: 3/10

[1,1]/[10,20]

\ "матрица A"\"матрица B" Обратное деление матриц. Соответствует операции A-1*B
^ "базовое значение"^"степень" Возведение первого выражение в степень второго. Вектора обрабатываются поэлементно. Матрицы возводятся в целую степень по правилам умножения матриц. Для возведения матрицы в степень поэлементно используйте оператор .^ Пример: 2^3
.* "матрица 1".*"матрица 2" Поэлементное перемножение действительных или комплексных матриц.
./ "матрица 1"./"матрица 2" Поэлементное деление действительных или комплексных матриц.
.^ "матрица 1".^"матрица 2" Поэлементное возведение в степень двух матриц или матрицы в действительную степень
! "целое число"! Вычисление факториала целого числа
.. a..b Вычисление интервала целых чисел от a до b. Пример: 1..4 обозначает [1,2,3,4]
# A#B Размножение числа B в вектор размерностью A. Пример: 3#0.1 обозначает [0.1, 0.1, 0.1]
& A&B Объединение векторов A и B Пример: [1,2] & 3…6 & 2#7 эквивалентно [1, 2, 3, 4, 5, 6, 7, 7]

Целочисленные и логические операторы:

Оператор Семантика Назначение и пример
or "выражение 1" or "выражение 2" Побитовая логическая операция ИЛИ.
and выражение 1" and "выражение 2" Побитовая логическая операция И.
xor выражение 1" xor "выражение 2" Побитовая логическая операция ИСКЛЮЧАЮЩЕЕ ИЛИ.
div "делимое" div "делитель" Целочисленное деление.
mod "делимое" mod "делитель" Остаток от целочисленного деления.
shl "число" shl "количество сдвигов" Побитовый сдвиг влево.
shr "число" shr "количество сдвигов" Побитовый сдвиг вправо.
> "операнд 1" > "операнд 2" Операция БОЛЬШЕ. Операция возвращает единицу если операнд 1 больше чем операнд 2.
< "операнд 1" < "операнд 2" Операция МЕНЬШЕ. Операция возвращает единицу если операнд 1 меньше чем операнд 2.
"операнд 1" ≥ "операнд 2" Операция БОЛЬШЕ ЛИБО РАВНО. Операция возвращает единицу если операнд 1 больше либо равен операнду 2.
"операнд 1" ≤ "операнд 2" Операция МЕНЬШЕ ЛИБО РАВНО. Операция возвращает единицу если операнд 1 меньше либо равен операнду 2.
= "операнд 1" = "операнд 2" Операция РАВНО. Операция возвращает единицу если операнд 1 равен операнду 2.
<> "операнд 1" <> "операнд 2" Операция НЕ РАВНО. Операция возвращает единицу если операнд 1 не равен операнду 2.

Специальные операторы:

Оператор Семантика Назначение и пример
() ("выражение") Математические скобки.

Выражение внутри скобок выполняется первым.

Пример: 4*(10+7)
() ("действительная часть","мнимая часть") Упаковка действительных чисел (векторов, матриц) в комплексное (комплексный вектор, матрицу). Допустимо написание частей комплексного числа через пробел или точку с запятой. Пример:(10,5)
[] ["элемент 1"{,"элемент 2"}] Упаковка элементов в массив. Если элементы – действительные или целые числа, то результат – вектор действительных чисел. Если элементы – векторы действительных чисел, результат – матрица действительных чисел. Если элементы – комплексные числа, то результат – вектор комплексных чисел. Если элементы – векторы комплексных чисел, результат – матрица комплексных чисел.

Разделителем элементов может быть запятая,точка с запятой или пробел.

Прим.: Если элемент вектора отрицательное число (-0.23), то данный элемент в векторе должен отделяться от предыдущего запятой.
Пример: X = [0, -0.23 2 3] - правильно.

X = [0 -0.23 2 3] – неправильно.

Вектора и матрицы можно присваивать, при этом элементы должны быть переменными.

Пример 1: Вектор

[1, 4.5, 7] или [1 4.5 7]

Пример 2: Матрица

[[1,2], [6,7]] или [[1 2];[6 7]]

Пример 3:Присваивание элементов массива

[a,b] = [1, 2]

[] "массив или матрица"["номер элемента или строки"{,"номер столбца"} ] Возвращает значение элемента с указанным номером. Нумерация начинается с 1. Тип возвращаемого значения соответствует типу элементов массива. Если для матрицы указывается один индекс, то возвращается вектор-строка матрицы, если 2 – возвращается число. Этот оператор может быть присвоен. Разделителем элементов может быть запятая, точка с запятой или пробел. Пример 1:Доступ

A=C[1,1]

k=arr[i]

Пример 2:Присваивание

C[1,1] = 10

k[3] = 4

Прим.: Cкобки массивов [ ] могут использоваться для декларации действительных массивов и матриц аналогично блоку «Язык программирования» (см. описание ключевого слова var) .