Пакет Mathcad
Скачать 96.5 Kb.
|
Великолепная семёрка MathCAD. Раз мы уж залезли в мистику (в описание магических свойств числа семь), то подошла пора рассказа о великолепной семёрке MathCAD - о семи видах графиков, используемых для визуального отображения различных зависимостей. Типов графиков в MathCAD, конечно, намного больше, но на панели инструментов имеется ровно семь кнопок для создания семи типов графиков. Мистика да и только. Самый распространенный график: двухмерный декартов график (X-Y Plot), иллюстрирующий связи между двумя или несколькими векторами. Декартов график строится, как правило, в три шага: hшаг 1: задание вида функций одной переменной; h шаг 2: формирование вектора значений аргумента; hшаг 3: построение графика. Третий шаг в свою очередь делится опять же на три шага hшаг 1: рисование на экране дисплея заготовки графика - прямоугольника с чёрными квадратиками у левой и правой сторон; заготовка графика появляется в отмеченном курсором месте после того, как пользователь нажмёт одну из семи кнопок панели инструментов «Графики»; hшаг 2: заполнение пользователем двух чёрных квадратиков заготовки графика («вакантных мест) именем функции и именем аргумента. Если функций больше одной, то их имена вводятся через запятую. В заготовке есть и другие чёрные квадратики, которые можно не заполнять. Среда MathCAD заполнит их сама. График появляется на дисплее после вывода курсора из зоны графика (автоматический режим расчётов ) или после нажатия клавиши F9 (ручной или автоматический режим расчётов). Параметры графика задаются стандартами по умолчанию; hшаг 3 необходим, если параметры графика, установленные по умолчанию не устраивают пользователя и он хочет их изменить, вызвав соответствующее меню. Если аргумент представляет собой угол, изменяющийся от 0 до 360 градусов, то ось аргументов декартова графика целесообразно «свернуть в круг» и получить полярный график ( Polar Plot). Графически отобразить функцию двух аргументов можно с помощью графика поверхности (Surface Plot), который строится, как правило, не в три, а в семь шагов: hшаг 1: задание вида функций двух переменных; hшаг 2: нумерация узлов сетки - поверхности по первому аргументу; hшаг 3: формирование вектора первого аргумента; hшаг 4: нумерация узлов сетки-поверхности по второму аргументу; hшаг 5: формирование вектора второго аргумента; hшаг 6: заполнение матрицы значениями функции в узлах сетки; hшаг 7: построение и форматирование графика поверхности. Очень часто, особенно при поиске оптимумов функции двух переменных, полезнее просмотреть не график поверхности, а карту линии уровня, которые подобны линиям на физической географической карте, охватывающим горы и впадины (минимумы и максимумы). На место линий графика можно поставить маленькие стрелочки, отмечающие направление изменения функций двух переменных. Тогда получится векторное поле (Vector Field Plot). Гибридом декартова графика и графика поверхности является так называемый трёхмерный точечный график2 (3D Scatter Plot). Его главное отличие от графиков, отображающих прямоугольные матрицы, в том, что с его помощью можно изобразить взаимосвязь трёх векторов. Графики можно расцветить так, чтобы более высокие зоны имели тёплые цвета, а более низкие - холодные. Пакет MathCAD может раскрасить объёмные конструкции (скажем точнее, виртуальные объёмные конструкции) так, чтобы пользователь смог увидеть всё, что ему нужно. В шестую версию MathCAD встроены средства анимации, позволяющие оживить MathCAD - документы. С анимацией связана системная переменная FRAME, которой через команды Windows-Animation-Create... в окне Create-Animation можно приказать меняться, например от 1 до 10. При открытом окне Create-Animation нужно выделить область, визуальное изменение которой желательно проанализировать и нажать кнопку Animate.после этого появится окно Playback, где средствами Microsoft Video будет показано изменение кривой на графике в зависимости от изменения значения переменной FRAME. Основной недостаток трёхмерной графики MathCAD и других подобных пакетов - в том, что область изменения аргументов должна быть прямоугольной. Сортировка. Экспериментальные данные перед дальнейшей обработкой желательно отсортировать. Это можно сделать вручную, переставив местами два первых элемента или (при объёмных массивах данных) автоматически через функцию csort, возвращающую упорядоченную матрицу по отмеченному номеру столбца. Для этого вектора объединяются в матрицу, которая после сортировки расчленяется на те же, но уже упорядоченные векторы. Это приходится делать из-за того, что некоторые функции MathCAD отказываются иметь дело с не отсортированными векторами. Линейная аппроксимация. Встроенные функции intercept (to intercept по-английски - отложить отрезок на линии) и slope (наклон) решают самую простую и самую распространённую задачу регрессионного анализа - нахождение прямой, пронизывающей точки методом наименьших квадратов. Найденные значения коэффициентов а иbаппроксимирующего уравнения y(x) = a + b×x позволяют построить на графике прямую с роящимися вокруг неё точками. Подобным графиком на практике, как правило, завершают регрессионный анализ: график, во-первых, даст наглядное представление о качестве анализа, а во-вторых, поможет в случае чего отловить допущенные ошибки ввода исходных данных (пропуск десятичной точки, например). Этой цели может служить и предварительная сортировка векторов: ошибочные значения часто всплывают на концах упорядоченного вектора. В-третьих, график сам по себе ценен. Графиком, т.е. с другого конца, можно довольно быстро решить линейную аппроксимационную задачу. Дополнить результаты регрессионного анализа неплохо указанием точки, максимально отклонившейся от прямой. Само значение такого выброса найти несложно через функцию max3. А вот с определением координат этой точки придётся повозиться: привлечь аппарат булевых выражений, принимающих два значения - True (в среде MathCAD - единица) и False (нуль), умножение которых на текущий индекс фиксирует искомую координату. В пакете MathCAD PLUS 6.0 почти 300 встроенных функций. При всём богатстве встроенных функций пакету MathCAD не хватает функции определения в векторе или в матрице координат минимального (максимального) элемента. Выход из положения - это сумма (для вектора) или двойная сумма (для матрицы) произведений номера текущего элемента на булево выражение. Эту конструкцию так и хочется оформить в виде новой функции с именем imax, например и больше с такой задачей не возиться. Но в новую функцию перекочует и будет замаскирована ошибка - не ясно, что будет возвращать новорождённая функция imax, если в аргументе-векторе (в массиве) два или более максимальных элементов. Из прозрачной формулы с суммой это понятно, а из «затенённой» функции imax- нет. Все эти замечания можно отнести и к встроенным функциям interceptи slope,возвращающим значения коэффициентов линейной регрессии. Всегда остаются сомнения, а нет ли в этих функциях фактической или методологической ошибки. Последнюю можно обнаружить, если подставить в функции interceptи slopeаргументы - векторы с двумя или даже одним методом. Через две точки можно всегда провести только одну прямую. Через одну точку прямых можно провести бесчисленное множество. И в том, и в другом случае сумма квадратов отклонений двух точек (одной точки) будет нулевой и требования метода наименьших квадратов будут выполняться абсолютно. Но в первом случае функции можно interceptи slope будут решать простую интерполяционную задачу, для которой в среде MathCAD есть особый математический аппарат. Во втором случае (X и Y - не векторы, а скаляры) функции interceptи slope должны выдавать бесчисленное множество значений, связанных ограничением Y = a + b×X. В плане выполнимости критерия наименьших квадратов здесь всё безупречно, но методология, заложенная в функции interceptи slope, приводит к тому, что при числе элементов в векторах X и Y, меньше двух, выдаётся сообщение об ошибке. Всё это слабая защита, которую пользователь может легко обойти, подсунув функциям interceptи slope более одной точки, но с повторяющимися значениями аргументов. Резюме: играть можно не только с игровыми программами. На эту роль подходят и серьёзные математические пакеты - было бы желание у пользователя. Дифференциальные уравнения. В среде MathCAD до версий PLUS 5.0 дифференциальные уравнения без особых ухищрений можно было решать только методом Эйлера, у которого низкие точность и производительность (плата за простоту). Инструментарий для решения дифференциальных уравнений (систем) различного порядка и различными методами в арсенале MathCAD появился сравнительно недавно. В него входят 13 встроенных функций (Bustoer, bustoer, bvalfit, multigird, relax, Rkadapt, rkadapt, rkfixed, sbval, Stiffb, stiffb, Stiffr и stiffr). Функция rkfixed возвращает в матрицу Z с Р+1 столбцами и n строками (Р - количество уравнений или порядок уравнения) - таблицу решений системы: первый (вернее, нулевой) столбец - это значения аргумента t (их задаёт пользователь), а последующие столбцы - значения ординат решения. В функцию rkfixed заложен широко распространённый метод Рунге - Кутта. Несмотря на то что это не самый быстрый метод, функция rkfixed почти всегда справляется с поставленной задачей. Программирование. Наиболее заметная «изюминка» шестой версии MathCAD, которую сразу оценили пользователи, - это встроенный язык программирования. В MathCAD, по сути, не встроен язык программирования, а просто снято ограничение на использование составных операторов в теле алгоритмических управляющих конструкций выбор и повторение. Кроме того, добавлены цикл с параметром и оператор досрочного выхода break. Алгоритмические конструкции и составные операторы в среде MathCAD вводятся нажимом одной из семи кнопок панели управления:
Add line - добавить строку программы, тела цикла, плеча альтернативы и т.д. ¬ - знак присвоения. While - при нажатии на эту кнопку на экране появляется заготовка цикла с предпроверкой: слово while с двумя пустыми квадратиками. В квадратик правее while нужно записать булево выражение (переменную), управляющее циклом, а во второй квадратик (ниже while ) - тело цикла. If - позволяет вводить в программу альтернативу с одним плечом. Otherwise - позволяет превратить неполную альтернативу в полную: C ¬ D if A > B E ¬ F otherwise for - кнопка для ввода в программы цикла с параметром. Break - кнопка досрочного выхода из программы или цикла. MathCAD или программы на языках высокого уровня? Итак система MathCAD позволяет автоматизировать множество математических, инженерных и учебных расчётов. С её помощью можно составлять библиотеки и пакеты из документов, реализующих такие расчёты. Целесообразна ли, при наличии MathCAD, подготовка программ математических расчётов на языках высокого уровня? Однозначного отрицательного ответа дать нельзя. Система основательно загружает ПК. Интерпретация формул и работа системы всегда в графическом режиме ведёт к потере скорости вычислений. Для ПК без сопроцессоров ( класса IBM PC XT ) медлительность системы вполне ощутима. Специализированные программы на Паскале и даже на Бейсике обеспечивают намного более высокую скорость вычислений однако и требуют больше времени для подготовки программ. Что вам важнее : потратить несколько дней (а то и недель) на разработку и отладку программы, решающей нужную задачу за десятые доли секунды, или затратить всего десяток минут на составление документа, решающего ту же задачу с помощью системы MathCAD за несколько секунд? Если последний вариант предпочтительнее - вам подходит MathCAD! Несомненно важны и такие достоинства системы, как высокая достоверность и надёжность результатов вычислений, наглядность документов и удобные графические средства вывода результатов вычислений. Литература :
2.«Мир ПК» №8’91 стр48 3.Очков В.Ф MathCAD PLUS 6.0 для студентов и инженеров. - М.: ТОО фирма «Компьютер Пресс»,1996. 1 Это не совсем так: пользователь MathCAD может правее числа, стоящего за знаком «=», ввести другую размерность, например метры. 2 Другое название - график рассеяния. 3 Стрелка в аргументе функции max указывает на то, что он - вектор. |