Язык программирования системы MathConnex
Назначение языка программирования Connex Script
Как было показано выше, система MathConnex может использовать свои собственные блоки с вычислительными операциями. В этих блоках могут использоваться и программные конструкции, составленные на основе специального языка программирования — Connex Script. Применение таких блоков заметно расширяет возможности подготовки сложных документов. Ниже дано достаточно полное описание этого языка.
Типы данных
Connex Script имеет данные вещественного и комплексного типа. Вещественные числа задаются с двойной точностью в IEEE-формате. Числа задаются в виде:
314 3. 14 5. 78е14
и т. д. Для задания комплексных чисел используется знак мнимой единицы i или J, например:
5. 78i 0. 5e10i 4. 0+ 8. 7j
Бесконечность задается словом "Inf". Слово "NaN" (Not-a-Number) означает нечисловое значение, например:
х = Inf у = NaN
Операторы и функции
Операторы Connex Script имеют хорошо известный вид и назначение:
=+ -* / А — арифметические операторы;
.*./.л — матричное умножение, деление и возведение в степень;
- (NOT) xor & (AND) ¦ (OR) — логические операторы;
\= >= <= > < — операторы сравнения.
Операнды логических операторов располагаются по обе стороны от них (кроме операнда - для NOT, например А&В&С или 2! =3). Такие выражения возвращают логические значения.
Connex Script содержит следующие встроенные функции:
abs — абсолютное значение;
ceil — ближайшее очередное целое;
ехр — экспонента;
floor — ближайшее предшествующее целое;
log10 — логарифм по основанию 10;
log2 — логарифм по основанию 2;
In — натуральный логарифм;
max — максимальное значение;
min — минимальное значение;
mod — остаток от деления;
nelem — число элементов в переменной;
round — округленное до ближайшего целого значение;
sign — функция знака;
sqrt — квадратный корень;
time — время в секундах с начала 1980 г.;
trunc — число десятичных позиций;
gamma — гамма-функция.
Имеются встроенные функции комплексного переменного:
conj — комплексно-сопряженное число;
im — мнимая часть аргумента;
re — действительная часть аргумента.
Тригонометрические функции представлены следующим набором: cos, sin, tan, sec, csc, cot, pi, acsc, acos, acot, asec, asin, atan.
Гиперболические функции представлены набором: cosh, coth, csch, sech, sinh, tanh, acsch, acosh, acoth, asech, asinh, atanh.
Матричные функции: cols — число столбцов матрицы, rows — число строк матрицы и det — детерминант матрицы.
Зарезервированные слова и идентификаторы
Зарезервированные слова, которые нельзя использовать в качестве идентификаторов для задаваемых пользователем объектов:
break cols complex delete else elseif end error for function if in list load nelem new real repeat return rows static until while xor
Примеры задания имен (идентификаторов) переменных:
this_is_my_variable tl х_5 R2D2
Имена должны быть заданы одним словом (допускается соединение нескольких слов символов объединения — горизонтальная черта снизу) и начинаться с буквы. Имена переменных допускается задавать только латинскими буквами.
Интерфейсные переменные
Интерфейсные переменные служат для организации обмена данными между блоками в документах MathConnex:
in0, inl,... — организуют ввод данных в блок с выходов других блоков;
out0, out1,... — организуют вывод данных из блока.
Интерфейсные переменные могут использоваться и в блоках системы MathCAD.
Создание списков, векторов и матриц
MathConnex может оперировать списками следующего вида:
{ ехрг, ехрг; ехрг, ехрг}
Списки создаются в фигурных скобках. Для разделения данных одного порядка используется запятая, а для данных разного порядка — точка с запятой.
Примеры задания списков:
Х = { 1, 2, 3} — задан вектор Х из трех элементов;
М= { 1, 2, 3; 4, 5, 6} — задана матрица М с размером 2х3.
Для задания векторов с элементами-числами можно использовать выражения вида:
start_expr: step_expr: end_expr
где start_expr — условие, задающее начальное значение списка чисел; step_ ехрг — шаг изменения ряда чисел; end_expr — условие, задающее конечное значение чисел в списке.
Например, выражение
Х-1: 2: 100
создает вектор чисел с именем X, у которого первое число равно 1, а последующие (до значения 100) идут с шагом нарастания 2. Другие примеры:
Y = 1: 5 — вектор чисел Х от 1 до 5 с шагом по умолчанию 1;
Z = 10: 1 — вектор чисел Z от 10 до 1 с шагом по умолчанию -1;
Запись выражений
Запись выражений выполняется в обычной алгебраической форме, например:
7 7+ 8* 19 / 3. 3 х х+ 8х/у* 8 х = у [5] А [3] = В [5, 3]* х
Вычисление функций также задается, как обычно, например:
у = sin (x)
При этом функция возвращает значение в ответ на обращение к ней с указанием параметра функции — переменной или выражения.
Неисполняемый однострочный комментарий задается после символа двойного слэша (//), например:
х = А [ 1, 2; 0] // take first element from 2nd and 3rd row
Многострочный комментарий помещается между символами (/*) и (*/).
Выражения размещаются в строках. Для их разделения можно использовать символ (;), например:
х = у+ 5; z = х^
х = 0; for i in 0: 5; x = x+ i; end
Для переноса длинных выражений с одной строки на другую используется символ подчеркивания ( _) в конце переносимой строки, например:
^-{i, 2, 3; _ 4, 5, 6;
7, S, 9}//3-by-3matrix
Условный оператор if
Условный оператор if используется для создания типовой конструкции:
if boolean_expr statement 1 statement2
elseif boolean_expr statements
else statement4
end Пример применения оператораif:
if ( x > у & x! - 0)
z=y/x
q = log (2-z)
elseif ( у >= x & у! = 0)
z-x/y
q=2'\z
else
z-0
q=l
end
Поскольку действие таких конструкций хорошо известно, воздержимся от их подробного описания.
Конструкция цикла типа for
Для определения цикла с заданным числом повторений используется конструкция с операторомfor:
for identifier in expr
statement 1
statement2
end
Например, оператор с заголовком for i in 1: 10 выполняет 10 циклов, поскольку переменная цикла меняется от 1 до 10 с шагом+ 1. Операторbreak,встречаясь в цикле, ведет к немедленному его прерыванию. Обычно этот оператор вводят в составе условного выражения с операторомif.
Глава 14 Примеры применения системы
MathCAD 7. 0 PRO
Общие замечания
В этой главе описаны наиболее интересные примеры из десяти пакетов при менений систем MathCAD, размещенных на дискете, прилагаемой к книге [б]. Примеры охватывают решения широкого круга практических задач в об ласти математики, физики, электро- и радиотехники, электроники [20-39].
В педагогической среде нередко звучат нарекания, что в системах Math CAD скрыты методы реализации численных расчетов и потому последние не наглядны. Такие нарекания абсурдны, поскольку именно MathCAD позволя ет описать алгоритм любого численного метода на естественном математичес ком языке, не прибегая к таким (скорее программистским, чем математичес ким) понятиям, как условные переходы, циклы и т. д. (хотя реализация алгоритмов с ними также возможна с помощью аппарата ранжированных пе ременных, не говоря уже о применении программных блоков).
При подготовке описанных здесь примеров определенное внимание уде лялось реализации численных методов типовыми возможностями системы MathCAD, причем даже тех методов, которые реализованы встроенными функциями систем. Это, во-первых, демонстрирует возможности системы MathCAD в наглядной реализации таких методов, во-вторых, позволяет ре шать относящиеся к ним задачи с использованием тех версий системы, у ко торых соответствующих функций нет, а в-третьих, дает заметное ускорение вычислении.
Разбор описанных примеров позволит читателю существенно углубить свои знания о возможностях систем класса MathCAD и полнее использовать их в своей учебе, на практике и в научном творчестве, а также заметно умень шить затраты времени на освоение системы, поскольку избавит вас от необхо димости самостоятельно придумывать учебные примеры.