Язык программирования системы 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 и полнее использовать их в своей учебе, на практике и в научном творчестве, а также заметно умень шить затраты времени на освоение системы, поскольку избавит вас от необхо димости самостоятельно придумывать учебные примеры.

Наши рекомендации