Неформальное описание и примеры.
Выражение представляется в обычной форме с четырьмя действиями арифметики и операцией возведения в степень (^ или **). Члены можно группировать круглыми или фигурными скобками:
5 - (1+2*2)
3^2+4^2-5**2
Если операнды представляют собой целые числа, то для операций +, -, * и возведения в целую неотрицательную степень ответ тоже будет целым.
Представление нецелых чисел содержит десятичную точку и/или порядок:
-3.1415 * 2.00 + 62830e-3
Необычным является то, как точность представления операндов влияет на точность представления результата:
0.2 + .162345 = 0.4
0.200 + .162345 = 0.362
Фактически эти дробные числа являются безразмерными физвеличинами с погрешностью, определяемой числом знаков.
Можно использовать и размерные физвеличины, указывая единицы в квадратных скобках:
9.82[m/s2]
— 9 целых 82 сотых метра на секунду в
квадрате
9.82[m*s-2]
— то же самое
Пробелы между числом и квадратной скобкой, а также внутри скобок не допускаются. Квадратные скобки можно опустить в случае, когда единицы измерения состоят из одной единицы, обозначаемой латинскими буквами, с метрическим префиксом или без оного:
100ms
15Г
- ошибка
15G
- можно, эквивалентно 15[G]
Будьте осторожны: эти правила просты и логичны, но иногда порождают нечто не очень простое для восприятия:
9.82[m/s2]*100ms^2/2
— здесь написано ускорение,
умножить на квадрат времени, всё делить пополам; результат равен
49.10mm
В выражении можно использовать предопределённые константы и функции:
sin(pi/2)
Множество констант и функций расширяемо — часть из них определена в ядре программы RA (см. ниже), более специфические могут быть определены в плагинах.
Обратите внимание, аргументами некоторых функций могут быть размерные физвеличины:
sin( 30degree )
— синус тридцати градусов, равно
0.5000000
sin( 30 )
— синус тридцати, равно -0.988032
Выражение — это объект, который может иметь арибуты. Значения этих атрибутов можно использовать в выражении. Так, если у выражения
pi*@R^2
имеется атрибут с именем 'R' и со значением 2cm, то значением выражения будет площадь круга с соответствующим радиусом.
Если у выражения есть атрибут с именем 'sample', у которого в свою очередь имеется атрибут с именем 'size', у которого есть атрибуты 'L' и 'W', то можно написать:
@sample@size@L * @sample@size@@W
Выше говорилось о выражениях над скалярными величинами со скалярным результатом. Однако операндами выражения могут быть как скаляры, так и функции одного переменного, в том числе экспериментальные записи, представляющие собой таблично заданные зависимости. Их можно складывать, делить друг на друга, умножать на скалярную физвеличину, и т.п.
Чтобы указать запись в качестве операнда, можно добавить её в качестве именованного атрибута к выражению и сослаться по имени атрибута, или проще — сослаться на неё по уникальному номеру записи:
#2015.01.14.57 - #2014.6.8.1
Здесь из 57ой записи от 14 января 2015 года вычитается первая запись от 8 июня 2014 года. Ссылку на запись можно несколько сократить: не указывать первые две цифры года.
Кроме того, можно сослаться на атрибут записи:
#15.01.14.57 + #15.01.14.57@angle * 5[kphoton/s/degree]
Здесь к кривой #57 прибавляется константная подставка, пропорциональная значению атрибута angle у этой же кривой. Обратите внимание на размерный множитель, который переводит angle в величину, совместимую по размерности с ординатами кривой. (Физического смысла у такого выражения по всей видимости нет, но это позволяет несколько спектров, записанных при разной ориентации образца, показать на одном графике со сдвигом по вертикали.)