Входной язык системы MathCAD 7. 0 Базовые понятия входного языка системы
Система MathCAD практически избавляет нас от необходимости программировать решение многих задач. Уходит в прошлое подход, когда пользователь, прежде чем вычислить определенный интеграл или производную заданной функции либо просто рассчитать ряд ее значений, был вынужден изучать основы программирования на Фортране, Бейсике или Паскале, а затем составлять свои простенькие и не очень надежные программы или же разыскивать их в статьях и книгах, подобных [2], и самостоятельно загружать эти программы в ПК.
Впрочем, нельзя не отметить, что такие программы (если они составлены корректно и профессионально) обеспечивают существенно большую скорость проведения вычислений, чем MathCAD. Однако время, необходимое на их создание, намного превышает время на подготовку задач к решению в системе MathCAD. MathCAD прежде всего требует от пользователя корректного описания алгоритма решения математической задачи на входном языке, очень напоминающем общепринятый язык описания математических и научно-технических расчетов. Естественно, это описание должно быть исчерпывающе полным и абсолютно точным. Тем не менее сказанное не означает, что решение задач в системе MathCAD нельзя назвать программированием. Просто MathCAD обладает специализированным входным языком программирования очень высокого уровня, ориентированным на математические расчеты.
Поэтому, рассматривая входной язык системы как язык программирования, мы можем выделить в нем типичные понятия и объекты, такие, как идентификаторы, константы, переменные, массивы и другие типы данных, операторы и функции, управляющие структуры и т. д. Четкое представление об их возможностях и правилах применения (синтаксисе) весьма полезно при решении задач умеренной и высокой сложности.
Ниже описан входной язык системы MathCAD PLUS 7. 0. Он содержит все операторы и функции, которые были во всех предшествующих версиях системы – MathCAD 3. 0/4. 0/5. 0/ PLUS 5. 0/6. 0/PLUS 6. 0 PRO, что позволяет использовать материал этой главы пользователям, работающим с любой из указанных версий. Для этого в приведенных ниже изображениях экрана, как правило, удалены элементы интерфейса, характерные для MathCAD 7. 0 PRO. Функции, имеющиеся только в профессиональных версиях (с приставкой PRO в названии), выделены символом Ф. Алфавит MathCAD 7. 0 PRO
Алфавит входного языка системы определяет совокупность символов и слов, которые используются при задании команд, необходимых для решения интересующего пользователя класса задач. Алфавит системы MathCAD содержит: • строчные и прописные латинские буквы; • строчные и прописные греческие буквы; арабские цифры от 0 до 9; системные переменные; операторы; имена встроенных функций; спецзнаки;
строчные и прописные буквы кириллицы (при работе с русифицированными документами).
К укрупненным элементам языка относятся типы данных, операторы, функции пользователя и управляющие структуры. Все эти элементы присущи и любому другому языку программирования.
К типам данных относятся числовые константы, обычные и системные переменные, массивы (векторы и матрицы) и данные файлового типа. По числу типов данных система MathCAD несколько уступает современным языкам программирования (к примеру, в ней нет данных типа записей, множеств и др. ). Это связано с определенной специализацией языка, направленной на математические расчеты общего характера. Впрочем, тенденция расширения типов данных в MathCAD налицо; в конце этой главы описан новый тип данных (строковые), которые появились в MathCAD 7. 0 PRO. Числовые константы
Константами называют поименованные объекты, хранящие некоторые значения, которые не могут быть изменены. В качестве имени числовых констант используются их числовые значения (к примеру, значения констант 0 и 1 есть соответственно ноль и единица). В системе MathCAD используются и числовые константы, значениями которых являются числа с разной системой исчисления: десятичные, восьмеричные или шестнадцатеричные.
Числовые константы задаются с помощью арабских цифр, десятичной точки (а не запятой) и знака – (минус). Например: 123 — целочисленная десятичная константа; 12. 3 — десятичная константа с дробной частью;
12. 3* 10-5 —десятичная константа с мантиссой (12. 3) и порядком-5. Эти формы представления числовых констант естественны, и их не стоит обсуждать, за исключением двух важных аспектов. Порядок числа вводится умножением мантиссы на 10 в степени, определяющей порядок. Во многих языках программирования принят ввод чисел в виде 12. 3е-5, где разделительный символеуказывает на порядок. Этот не вполне естественный для математики ввод числа в системе MathCAD устранен.
Далее надо отметить, что знак умножения* при выводе числа на экран меняется на привычную математикам точку, а операция возведения в степень (с применением спецзнака ^) отображается путем представления порядка в виде надстрочного элемента. Десятичные числа имеют основание 10. Диапазон их возможных значений лежит в пределах от 10^07 до 10^307 (это машинная бесконечность и машинный ноль). Восьмеричные и шестнадцатеричные числа
Система MathCAD может работать с восьмеричными и шестнадцатеричными числами. Восьмеричные числа имеют основание 8, так что один их разряд может иметь значения от 0 до 7. Такие числа в конце отмечаются латинской буквой О (от слова octal— восьмеричное).
Шестнадцатеричные числа имеют основание 16, и их разряд может иметь значения: HEX 0123456789ABCDEF DEC О 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Шестнадцатеричные числа имеют в конце отличительный признак в виде буквы h или Н (от слова hexagonal— шестнадцатеричное). Под сокращенным названием этих чисел HEX приведены их десятичные значения DEC (от decimal — десятичное). Применение восьмеричных и шестнадцатеричных чисел в обычной математике ограничено, и в дальнейшем мы эти числа (а также константы на их основе) использовать не будем. Однако отметим, что если шестнадцатеричное число начинается с буквы (например, АВС0), то система будет путать его с возможным именем переменной. Для устранения потенциальных ошибок такие числа надо начинать с цифры 0 (ноль). В математических выражениях можно комбинировать числа различного типа (например, 10+ 0eh = 18H). Комплексные числа
Большинство вычислений система выполняет как с действительными, так и с комплексными числами, которые обычно представляются в алгебраическом виде: Z = ReZ+ i* ImZ или Z = ReZ+ j* ImZ
Здесь ReZ — действительная часть комплексного числа Z, ImZ — его мнимая часть, а символы i или jобозначают мнимую единицу, т. е. корень квадратный из -1. Такое представление характерно и для системы MathCAD (за исключением того, что знак равенства не есть знак присваивания). Итак, еслиReZ = 2, а ImZ =3, то комплексная числовая константа в системе MathCAD должна быть задана в виде 2+ г* 3 или 2+ j* 3.
Однако система не всегда знает, какой символ применить для обозначения мнимой единицы. Поэтому перед использованием любых операций с комплексными числами полезно вначале определитьiили, /’ как мнимую единицу (т. е. присвоить им значение квадратного корня из -1). Единицы измерения
В системе может применяться особый вид констант —единицы измерения размерных величин. Помимо своего числового значения они характеризуются еще и указанием на то, к какой физической величине они относятся. Для этого указания используется символ умножения. В системе MathCAD заданы следующие основные типы физических величин: time (время), length (длина), mass (масса) charge (заряд) и др. При необходимости их можно изменить на другие. Строковые константы
В описываемую версию MathCAD включены данные строкового типа. Как обычно, строковая константа— это строка, заключенная в кавычки, например: “My_name” или “My first example”. В строковую константу могут входить один или несколько символов либо слов. Переменные
Переменные являются поименованными объектами, имеющими некоторое значение, которое может изменяться по ходу выполнения программы. Имена констант, переменных и иных объектов называют идентификаторами. Тип переменной определяется ее значением; переменные могут быть числовыми, строковыми, символьными и т. д.
Идентификаторы в системе MathCAD могут иметь практически любую длину, и в них могут входить любые латинские и греческие буквы, а также цифры. Однако начинаться идентификатор может только с буквы, например:
х, xl, alfa, X_coordinate. Кроме того, идентификатор не должен содержать пробелов. Некоторые спецсимволы (например, знак объединения _) могут входить в состав идентификаторов, другие (например, знаки операторов арифметических действии)—недопустимы. Нельзя использовать для идентификаторов буквы русского языка. Строчные и прописные буквы в идентификаторах различаются. Идентификаторы должны быть уникальными, т. е. они не могут совпадать с именами встроенных или определенных пользователем функций.
Переменные могут также быть строкового типа, например N: =”My_name”. Для обработки строковых констант и переменных в MathCAD 7. 0 PRO введен ряд строковых функций, которые мы рассмотрим в дальнейшем. Заметим, что этот вид данных в прежних версиях системы MathCAD отсутствовал. Системные переменные
В MathCAD содержится небольшая группа особых объектов, которые нельзя отнести ни к классу констант, ни к классу переменных. Их правильнее считать системными переменными, имеющими предопределенные системой начальные значения. Ниже указаны эти объекты и приведены их начальные значения (в скобках): Объект Ввод Назначение л Ctrl+ P Число “пи” (3. 14…) е е Основание натурального логарифма (2. 71…) Ctrl+ Z Системная бесконечность (1 (^307) % % Процент (0. 01) TOL Погрешность численных методов (0. 001) ORIGIN Нижняя граница индексации массивов (0) PRNCOLWIDTH Число столбцов оператора WRITEPRN (8)
PRNPRECISSION Число десятичных знаков, используемых оператором WRITEPRN (4) FRAME Переменная счетчика кадров при работе с анимационными рисунками (0) Пять последних переменных вводятся набором их имен. Значения системных переменных, как и обычных, могут быть в дальнейшем изменены путем присваивания им новых значений. К примеру, значениееможно изменить так, что эта переменная будет означать заряд электрона, а вовсе не основание натурального логарифма. Однако рекомендуется этого не делать во избежание двойного истолкования таких переменных. Операторы
Операторы представляют собой элементы языка, с помощью которых можно создавать математические выражения. К ним, например, относятся символы арифметических операций, знаки вычисления сумм, произведений, производной и интеграла и т. д. После указания операндов (параметров операторов) операторы становятся исполняемыми по программе блоками. MathCAD позволяет задавать и свои новые операторы. Функции встроенные и задаваемые пользователем
MathCAD имеет множество встроенных функций, которые обладают особым свойством: в ответ на обращение к ним по имени с указанием аргумента (или списка аргументов) они возвращают некоторое значение—символьное, числовое, вектор или матрицу. В систему встроен ряд функций, например функция вычисления синуса sin (x) аргумента х, логарифма \п (х)и т. д. Наряду со встроенными функциями могут задаваться и функции пользователя, отсутствующие в MathCAD. Благодаря встроенным функциям обеспечивается расширение входного языка системы и его адаптация к задачам пользователя. Математические выражения
Функции (наряду с операторами) могут входить в математические выражения. Например, в выражении У : = 2* ln (x)+ i
Y — переменная, 1 и 2 — числовые константы, * и+ — операторы, ln (x) — встроенная функция с аргументом х. Напоминаем, что встроенные функции в данной книге выделяются полужирным шрифтом (за исключением примеров их записей в документах, где специальных выделений нет).
При выполнении символьных операций переменные р и еиспользуются только в символьном виде. Это значит, что их числовые значения не вычисляются при выводе результатов вычислений. К примеру, число 2л=6. 141…. выводится как2п, а не как приближенное численное значение. Присваивание переменным значений
Обычные переменные отличаются от системных тем, что они должны быть предварительно определены пользователем, т. е. им необходимо хотя бы однажды присвоить значение. В качестве оператора присваивания используется знак: =, тогда как знак =отведен для вывода значения константы или переменной. Попытка использовать неопределенную переменную ведет к выводу сообщения об ошибке—переменная окрашивается в ярко-красный цвет. Существует также жирный знак равенства, который используется либо как признак неравенства в операциях сравнения, либо как оператор приближенного равенства (в прежних версиях этот знак имел вид =).
В версии MathCAD 7. 0 допустимо при первом присваивании вводить знак = (например, х=123). Система сама заменит его на знак: =. Эта возможность скорее исключение, чем правило; знаком присваивания все же является знак: =. Если переменной присваивается начальное значение с помощью оператора: =, такое присваивание называется локальным. До этого присваивания переменная не определена и ее нельзя использовать. Однако с помощью знака = (три горизонтальные черточки) можно обеспечить глобальное присваивание, т. е. оно может производиться в любом месте документа. К примеру, если переменной присвоено таким образом значение в самом конце документа, то она будет иметь это же значение и в начале документа. Разумеется, в дальнейшем значение можно изменить и с помощью операции локального присваивания (см. рис. 11. 1). Рис. 11. 1 Особенности локального и глобального присваивания переменным их числовых значений
Переменные могут использоваться в математических выражениях, быть аргументами функций или операндом операторов. Далее мы рассмотрим особые виды переменных, в частности индексированные (элементы векторов и матриц), а также переменные с заданными пределами их изменения (ранжированные переменные). Статус присваивания не следует путать со статусом самих переменных. Все переменные, описанные выше, являются глобальными, поскольку можно определять их в любом месте документа и также в любом месте изменять их значение. Локальные переменные в системе MathCAD содержатся в телах функций пользователя. Эти функции будут рассмотрены ниже.
Переменные могут быть и размерными, т. е. характеризоваться не только своим значением, но и указанием физической величины, значение которой они хранят. Для присваивания значений таким переменным используется знак =. На рис. 11. 2 представлены примеры работы с размерными переменными.
Проведение расчетов с размерными величинами и переменными особенно удобно при решении различных физических задач. При этом правильная
Рис. 11. 2 Примеры задания и применения размерных переменных размерность результата является дополнительным фактором, свидетельствующим о корректности таких расчетов
Использование незаданной переменной ошибочно Такая переменная отмечается красным цветом (в предшествующих версиях MathCAD—черным фоном) Использование несуществующих переменных в математических выражениях может привести к различным ошибкам Все они диагностируются и требуют исправления для продолжения вычислений 11. 2. Ранжированные переменные и таблицы вывода Задание ранжированных переменных
Ранжированные переменные —особый класс переменных, который в системе MathCAD зачастую заменяет управляющие структуры, называемые циклами (однако полноценной такая замена не является) Эти переменные имеют ряд фиксированных значений (либо целочисленных, либо в виде чисел), с определенным шагом меняющихся от начального значения до конечного.
Ранжированные переменные характеризуются именем и индексом каждого своего элемента Для создания ранжированной переменной целочисленного типа используется выражение Name Nbegin Nend
где Name — имя переменной, Nbegin — ее начальное значение, Nend — конечное значение, —символ, указывающий на изменение переменной в заданных пределах (он вводится знаком точки с запятой, ). ЕслиNbegin
Здесь Step — заданный шаг изменения переменной (он может быть положительным, если Nbegin
Ранжированные переменные широко применяются для представления числовых значений функций в виде таблиц, а также для построения их графиков. Любое выражение с ранжированными переменными после знака равенства инициирует таблицу вывода. Несколько таких таблиц показано на рис. 11. 3.
Рис. 11. 3 Примеры типового применения ранжированных переменных Полезно учитывать некоторые свойства таблиц вывода:
• число строк в них не может быть больше 50 (большие таблицы придется составлять из нескольких малых);
• числа в таблицах можно задавать в требуемом формате с помощью операций задания формата чисел;
• при использовании в таблице единиц размерности все данные таблицы будут содержать единицы размерности (поделите результат с размерными переменными на размерность для указания ее только в заголовке таблицы вывода); Есть три способа показать значения векторов: Х, = выводится обычная таблица вывода; Х= выводится вектор, если число его элементов меньше 10;
Х= выводится таблица вывода со слайдером, если число элементов вектора больше 10.
В таблицы вывода можно и вставлять числовые значения, и корректировать их. Естественно, это меняет значения элементов соответствующего вектора. Применение ранжированных переменных
Важно отметить, что в сущности задание ранжированных переменных эквивалентно заданию конечных циклов. Сами ранжированные переменные являются векторами, что видно из выдачи их значений (столбец со всеми значениями переменных). Это означает, что объем памяти, занимаемый такими переменными, больше занимаемого обычными переменными.
Индексированные переменные, образующиеся в результате задания ранжированных переменных, могут применяться в последующих фор-мульных блоках. Однако в этих блоках необходимо соблюдать соответствие результатов (конечных и промежуточных) векторному типу этих переменных.
Привыкшие к обычному программированию пользователи часто забывают, что ранжированная переменная—вектор. Поэтому они пытаются выполнять с такими операциями действия, корректные лишь для обычных (скалярных) переменных. Например, задают выражение вроде f: =i* 2, используя обычную переменную f, что приведет к явной ошибке—система укажет (красным цветом), что f не соответствует векторному типу. Однако если использовать выражение, например, вида f, : = i^2
то будет получен новый вектор с именем f, элементы которого в нашем случае являются квадратами значений элементов вектора i. Более подробно особенности задания и применения векторов рассматриваются далее.
Ранжированные переменные широко применяются при построении графиков. Например, для построения графика некоторой функцииf (x) прежде всего надо позаботиться о создании ряда значений переменной х, для этого она должна быть ранжированной. 11. 3. Массивы, векторы и матрицы Понятие о массивах
Важным типом данных в системе MathCAD являются массивы. Массив —имеющая уникальное имя совокупность конечного числа числовых или символьных элементов, упорядоченных заданным образом и имеющих определенные адреса. В системе MathCAD используются массивы двух наиболее распространенных типов: одномерные (векторы) и двумерные (матрицы). Массивы-векторы Ниже представлено три пятиэлементных массива-вектора:
Номер элемента 0 1 2 3 4 Значение О 1 4 9 16 Значение а Ь с d e Значение 0 х 2* x^2 3*x^3 4* х4 Первый из представленных массивов — числовой, два других — символьные. Индексация элементов массивов
Порядковый номер элемента, который является его адресом, называется индексом. Напоминаем, что нижняя граница индексации задается значением системной переменной ORIGIN, которая может принимать значение 0 или 1. Имя массива естественно увязать с именами индексированных переменных, значениями которых являются элементы массива. Для этого достаточно в виде подстрочного индекса указать индекс элемента. Например, если третий из представленных массивов имеет имя V, то его элементами при ORIGIN=0 будут индексированные переменные: Vo=0 V1=x V2=2×2 Vз-Зх3 V4=4×4
Векторы могут быть двух типов: векторы-строки и векторы-столбцы. Например:
Несмотря на то что два этих вектора имеют одни и те же числовые значения элементов, они различны по типу и дадут разные результаты при векторных и матричных операциях, чувствительных к типу векторов. Матрицы
Матрица может рассматриваться как совокупность ряда векторов одинаковой длины, например:
Элементы матриц являются индексированными переменными, имена которых совпадают с именами матриц. Но в этом случае для каждой индексированной переменной указываются два индекса: один— для номера строки, другой —для номера столбца. Например, для указанной матрицы М средний элемент обозначается как М1, 1, а последний как М; 2, 2
Для задания векторов и матриц можно воспользоваться операцией Matrix…. (Матрицы…. ) в позиции Math (Математика)основного меню, нажав клавиши Ctrl+V или введя пиктограмму с изображением шаблона матрицы. Это вызывает вначале появление диалогового окна, в котором надо указать размерность матрицы, т. е. количество ее строкт и столбцов п. Для векторов один из этих параметров должен быть равен 1. При m=1 получим вектор-столбец, а прип=\ — вектор-строку. Матрица является двумерным массивом с числом элементов тхп. Элементы векторов и матриц помещаются между большими квадратными скобками. Ввод элементов векторов и матриц
Для указания подстрочных индексов после имени переменной вводится знак открывающей квадратной скобки: Ввод Изображение в окне V3 [ 2 : V32 : =
Для элементов матрицы подстрочные индексы вводятся в круглых скобках с разделением их запятыми: Ввод Изображение в окне редактирования М [ ( 1, 2 ) : M1, 2 : =
Индексы могут иметь только целочисленные значения Они могут начинаться с нуля или с целого числа, например с единицы, в соответствии со значением системной переменной ORIGIN Задание векторов и матриц
В отношении индексированных переменных действуют те же правила присваивания и вывода, что и для обычных В частности, с помощью операций присваивания можно создать вектор или матрицу заданной размерности и заданного типа без ручного вывода их шаблоном и без их заполнения. Это иллюстрирует рис. 11. 4, на котором показано задание нулевой, единичной и специальной матриц путем поэлементного их формирования. Рис. 11. 4 Задание матриц без применения их шаблонов
Такой способ задания матриц очень напоминает применяемый в обычных программах метод, при котором значения элементам матриц присваиваются в двух вложенных циклах с управляющими переменными и г. Однако это сходство чисто внешнее, так как в нашем случае ранжированные переменные i и j — векторы. 11 . 4. Данные файлового типа
Еще один важный тип данных системы MathCAD —файловые данные В сущности, это те же векторы и матрицы, но с элементами, которые могут записываться в виде файлов, имеющих свои имена. Файлы данных в системе представляет собою запись матриц в их естественной форме как последовательных текстовых файлов. Это простейший тип файлов, который легко обрабатывается в программах на различных языках программирования и может создаваться такими программами, благодаря чему возможен обмен данными между системой MathCAD и другими программами.
В ходе создания файла система считывает значения элементов векторов и матриц поэлементно (для матриц слева направо и сверху вниз) и по ходу считывания преобразует числовые значения элементов в их символьные эквиваленты, использующие ASCII-коды цифр и символы, относящиеся к заданию чисел. Эти символьные значения и записываются в виде данных файлов.
Существует семь файловых операций, рассматриваемых ниже. Создаваемые или используемые ими файлы легко просмотреть любым текстовым редактором, воспринимающим тексты в виде ASCII-кодов. При считывании файлов система обеспечивает обратное преобразование символьных представлений значений элементов в их числовые значения. Начнем рассмотрение этих операций с операции считывания файла, содержащего данные векторы. 1. READ (Имя_файла)
Эта операция-функция считывает данные из файла с указанным именем Имя_файла и возвращает значение— вектор. Обычно она используется для присваивания значений векторам, например: V: = READ (DATA)
Здесь элементы вектора V получают значения, считанные из файла с именем DATA. Естественно, что такой файл должен существовать на диске, иначе ситуация будет считаться ошибочной. Для указания полного имени файла (если он не в текущем каталоге системы) следует использовать общеупотребительные для MS-DOS составные имена, например D: \EXPER\DATA, если файл DATA расположен на диске D в каталоге EXPER. 2. WRITE (Имя_файла)
Эта операция записывает данные в файл и присваивает ему указанное имя. Данные могут порождаться математическим выражением, например: WRITE (Имя_файла): = Выражение
Разумеется, выражение должно создавать данные векторного типа. 3. APPEND (Имя_файла)
Эта операция подобна операции WRITE, но она дописывает данные в конец уже существующего файла. Нельзя использовать другие функции для до-писывания данных, поскольку эти функции уничтожают прежние данные в файле и заносят новые. 4. READPRN (Имя_файла)
Эта операция подобна READ, но считывает данные в виде двумерного массива — матрицы. Функция READPRNвозвращает матрицу, значения элементов которой однозначно связаны со значениями элементов файла. Точнее, каждая строка или столбец возвращаемой матрицы подобны соответствующим строкам или столбцам текстового представления файла. 5. WRITEPRN (Имя_файла)
Эта операция подобна WRITE, но применяется для записи матричного выражения (или матрицы) в файл с указанным именем. Структура файла подобна структуре матрицы. 6. APPENDPRN (Имя_фaйлa)