математические пакеты ПРОГРАММ.

  систеМА ПРОГРАММИРОВАНИЯ МathCAD.

1.1. Обзор пакета MathCAD 2000.

Введение в MathCAD.

MathCAD – это популярная система компьютерной математики, предназначенная для автоматизации решения массовых математических задач в самых различных областях науки, техники и образования.

MathCAD – математически ориентированные универсальные системы. Помимо собственно вычислений они позволяют решать задачи, которые с трудом поддаются популярным текстовым редакторам или электронным таблицам. С их помощью можно не только качественно подготовить тексты статей, книг, диссертаций, научных отчетов, дипломных и курсовых проектов, они, кроме того, облегчают набор самых сложных математических формул и дают возможность представления результатов графическом виде.


Входной язык системы MathCAD.

Уникальное свойство MathCAD — возможность описания математических алгоритмов в естественной математической форме с применением общепринятой символики для математических знаков, таких, например, как квадратный корень, знак деления в виде горизонтальной черты, знак интеграла и т. д.

Такой подход значительно облегчает восприятие математической сущности задачи и избавляет пользователя от изучения некоторого промежуточного языка программирования (например, Фортрана, Бейсика, Паскаля и т. д.). Можно сказать, что в MathCAD идея решения математических задач без их программирования доведена до совершенства: подавляющее большинство задач требуют лишь корректного формульного описания и не нуждаются в подготовке программ в их общепринятом виде.

НЕ нашли? Не то? Что вы ищете?

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

Входной язык MathCAD относится к интерпретирующему типу. Это означает, что когда он опознает какой-либо объект системы, то тут же исполняет указанные в блоке операции. Языком реализации системы является язык Си++.

В MathCAD включены важнейшие средства программирования и предусмотрена возможность задания программных блоков — процедур с общепринятыми операторами программирования. В совокупности с иными средствами входного языка это делает его необычайно гибким, мощным и наглядным.


Простейшие приёмы работы.

Формульный редактор.

Фактически система MathCAD интегрирует три редактора: формульный, текстовый и графический. Для запуска формульного редактора достаточно установить курсор мыши в любом свободном месте окна редактирования и щелкнуть левой клавишей. Появится визир в виде маленького красного крестика. Его можно перемещать клавишами перемещения курсора.

Визир указывает место, с которого можно начинать набор формул — вычислительных блоков. Щелчок левой клавиши мыши устанавливает визир на место, указанное острием стрелки курсора мыши. В зависимости от места расположения визир может менять свою форму, к чему вы быстро привыкнете.

Так, в области формул визир превращается в синий уголок, указывающий направление и место ввода.

Рис. 1.1. Общий вид окна MathCAD с примерами вычислений.

Наборные панели и шаблоны.

Подготовка вычислительных блоков облегчается благодаря выводу шаблона при задании того или иного оператора. Для этого в MathCAD служат наборные панели с шаблонами различных математических символов.

Допустим, требуется вычислить определенный интеграл. Для этого вначале надо вывести панель операторов математического анализа; ее пиктограмма в строке инструментов имеет знаки интеграла и производной. Затем следует установить визир в то место экрана, куда выводится шаблон, и на панели сделать активной пиктограмму с изображением знака определенного интеграла.


Работа с символьным процессором.

Возможности символьного процессора (Symbolic)

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

Введение в систему MathCAD символьных вычислений придает ей качественно новые возможности, которые отсутствовали у прежних версий системы. Куда важней, что символьные вычисления выполняются в конечном счете столь же просто (для пользователя), как, скажем, вычисление квадрата х.

Операции, относящиеся к работе символьного процессора, содержатся в подменю позиции Symbolic (Символика) главного меню.

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



Оптимизация вычислений и программирование

1.1.5.1. Система SmartMath и ее возможности.

Назначение системы SmartMath.

Система SmartMath более полно использует ядро символьных операций, чем символьные вычисления из подменю позиции Symbolics главного меню, и снимает некоторые ограничения на их выполнение. Например, возможно использование в преобразуемых выражениях функций пользователя. Еще важнее то, что результаты символьных преобразований, выполняемых системой SmartMath, автоматически меняются при изменении исходных символьных данных. Этого, увы, не происходит при символьных вычислениях с помощью команд в позиции Symbolics главного меню [3-4].

Оператор символьного вывода.

Вначале для визуализации результатов символьных преобразований был введен специальный символ — удлиненная горизонтальная стрелка —>. Ее можно вызвать нажатием клавиш Ctrl+. (точка) или вызовом из палитр математических символов (для ввода отношений и символьных операций). Шаблон этого знака имеет вид • —>, где на месте черного прямоугольника вводится подвергаемое символьному преобразованию исходное выражение.

Указанный символ можно рассматривать как простой оператор символьного вывода. Если задать исходное выражение и вывести курсор из формульного блока с ним, то система помещает результат его символьных преобразований после стрелки (оператора символьного вывода). Это и есть первый этап работы с системой SmartMath.

Оператор расширенного символьного вывода.

С версии системы MathCAD 7.0 PRO введен еще один расширенный оператор символьного вывода. Он задается нажатием клавиш Ctrl+ Shift+. (точка) или выбором из палитры символьных операций. Этот оператор имеет вид • • —>. В первый шаблон-прямоугольник вводится исходное выражение, а во второй — директивы символьных преобразований. Они будут описаны чуть позже; задаются эти директивы или вводом соответствующих ключевых слов, или из палитры символьных операций.

Кроме того, в один такой оператор можно ввести другой, с тем чтобы получить составной расширенный оператор символьного вывода и место для записи нескольких директив. Это позволяет намечать заданный путь символьных преобразований.

1.1.5.2. Задание программных модулей.

Программные операторы

Вплоть до появления последних версий системы MathCAD возможности программирования в них были крайне ограниченными. Фактически MathCAD позволяла реализовать лишь линейные программы, в основе которых лежит понятие функции. Функция if и ранжированные переменные в отдельных случаях могли заменить условные выражения и циклы, но с серьезными ограничениями. Отсутствовала возможность задания завершенных программных модулей.

Эти возможности наконец появились в версии MathCAD PLUS 6.0 PRO и в расширенном варианте имеются в описываемой версии MathCAD 2000. Они сосредоточены в наборной панели программных элементов.

Обзор программных операторов по.

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

Оператор Add Line

Оператор Add Line выполняет функции расширения программного блока. Расширение фиксируется удлинением вертикальной черты программных блоков или их древовидным расширением. Благодаря этому в принципе можно создавать сколь угодно большие программы.

Оператор <-

Оператор <— выполняет функции внутреннего локального присваивания. Например, выражение х <— 123 присваивает переменной х значение 123. Локальный характер присваивания означает, что такое значение х сохраняет только в теле программы. За пределами тела программы значение переменной х может быть неопределенным либо равным значению, которое задается операторами локального: = и глобального = присваивания вне программного блока.

Оператор if

Оператор if является оператором условного выражения. Он задается в виде:

Выражение if Условие

Если Условие выполняется, то возвращается значение Выражения. Совместно с этим оператором часто используются оператор прерывания break и оператор иного выбора otherwise.

Оператор for

Оператор for служит для организации циклов с заданным числом повторений. Он записывается в виде:

for Var e Nmin.. Nmax

•  Эта запись означает, что если переменная Var меняется с шагом+ 1 от значения Nmin до значения Nmax, то выражение, помещенное в шаблон, будет выполняться. Переменную счетчика Var можно использовать в выражениях программы.

  Оператор while

Оператор while служит для организации циклов, действующих до тех пор, пока выполняется некоторое Условие. Этот оператор записывается в виде:

while Условие

• Выполняемое выражение записывается на место шаблона.

Оператор otherwise

Оператор иного выбора otherwise обычно используется совместно с оператором if. Это поясняет следующая программная конструкция:

f (x): = 1 if х>0 возвращает 1, если х > О

-1 otherwise возвращает -1 во всех иных случаях

Оператор break

Оператор break вызывает прерывание работы программы всякий раз, когда он встречается. Чаще всего он используется совместно с оператором условного выражения if и операторами циклов while и for, обеспечивая переход в конец тела цикла.

Оператор continue

Оператор continue используется для продолжения работы после прерывания программы. Обычно он применяется совместно с операторами задания циклов while и for, обеспечивая после прерывания возврат в начало цикла.

Оператор return

Оператор return прерывает выполнение программы и возвращает значение своего операнда, стоящего следом за ним. Например, в приведенном ниже случае

return 0 if x<0

будет возвращаться значение 0 при любом х < 0.

Оператор on error

Оператор on error является оператором обработки ошибок, позволяющим создавать конструкции обработчиков ошибок. Этот оператор задается в виде:

Выражение_1 on error Выражение_2

Если при выполнении Выражения_1 возникает ошибка, то выполняется Выражение_2. С оператором on error связана функция error, которая обычно используется для возврата текстового сообщения об ошибке.



Примеры программирования.

Несмотря на столь скромный набор программных средств, они дают системе MathCAD именно те возможности, которые ранее попросту отсутствовали: задание функций с аппаратом локальных переменных, задание различных видов циклов (в том числе вложенных), упрощение алгоритмов с помощью операций присваивания и реализация по классическим алгоритмам итерационных и рекурсивных процедур. Рекомендуется внимательно изучить рис. 12. 10, на котором показана часть этих возможностей.

Обратите особое внимание на второй пример вычисления факториала. Здесь использовано задание одного программного модуля внутри другого. Вообще говоря, для нескольких подмодулей, которые должны выполняться в составе циклов, надо использовать их объединение в виде жирной вертикальной черты. Для этого, как и для исходного задания блока, служит


Рис. 1.2 Примеры задания программных блоков

команда Add Line, добавляющая в модуль дополнительную вертикальную черту для подмодуля.

Программный модуль в сущности является функцией, но описанной с применением упомянутых сугубо программных средств. Эта функция может возвращать значение, определяемое последним оператором. Это значит, что после такого модуля, выделенного как целый блок, можно поставить знак равенства для вывода значения функции. В блоке могут содержаться любые операторы и функции входного языка системы. Для передачи в блок значений переменных можно использовать переменные документа, которые ведут себя в блоке как глобальные переменные.

Задание программных модулей позволяет реализовать любые специальные приемы программирования и может служить мощным средством расширения системы путем задания новых функций.

Разумеется, подобные задачи могут в системе MathCAD решаться и без использования в явном виде программных средств. Однако эти средства облегчают решение сложных задач, особенно когда имеется описание их программной реализации на каком-либо языке программирования Тогда несложно перевести реализацию решения задачи с этого языка на язык программирования системы MathCAD.

Следует также отметить, что система MathCAD допускает расширение путем включения в нее новых функций, написанных на языке Си или Си++. Впрочем, возможности системы настолько широки, что трудно себе представить необходимость в таком кардинальном шаге. Это расширение скорее может оказаться полезным для разработчиков системы, чем для подавляющего большинства ее пользователей.