Mathcad 8: первые впечатления

Валерий Очков

 

Пакет Mathcad — это математическая программа. Поэтому разговор о новинках Mathcad 8 мы начнем, естественно, с анализа дополнительных вычислительных возможностей.

В Mathcad 8 введены функции, позволяющие решать разного рода оптимизационные задачи.

Рис. 1

Вспомним, как в среде Mathcad 7 и в средах более ранних версий Mathcad ищут минимум функции (рис.: 1): задается вид анализируемой функции (у нас это тестовая функция Пауэла с четырьмя аргументами), затем вводится первое приближение, пишется ключевое слово given (дано) и вызывается функция minerr (минимальная ошибка), между которыми записываются булевы выражения (на рис.1 оно одно).

Рис 2

Функция minerr возвращает значения своих аргументов, при которых левые и правые части выражений (выражения), зажатых между given и minerr, отличаются по модулю минимально.

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

Реализации Mathcad ниже восьмой версии требовали, чтобы число выражений, зажатых между ключевым словом given и функцией minerr, было не меньшим, чем число неизвестных. Из-за этого приходилось засорять протокол решения задачи всякой чепухой вроде “1 = 1”, “2 > 1” и т. д. В среде Mathcad 8 этот недостаток устранен. Но появился новый казус, соответствующий принципу “наши недостатки — это продолжение наших достоинств”: между ключевым словом given и функцией, возвращающей решение задачи, можно совсем ничего не писать. Спрашивается, зачем в этом случае вообще нужно ключевое слово given?!

В среду Mathcad 8 введены две новые функции minimize и maximize, позволяющие решать оптимизационные задачи без вышеописанных на рис. 1 ухищрений. На рис. 2 (который является продолжением рис. 1 и берет оттуда вид функции Пауэла и начальное приближение к минимуму) показана работа функции minimize.

В среде Mathcad 8 щелчок правой кнопкой мыши по имени “решающих” функций (minimize — cм. рис. 2, maximize, minerr и find) вызывает дополнительное меню со списком трех возможных методов численного решения задачи (метод Левенберга-Маркворта, метод Ньютона и градиентный метод) и их деталей (Options). Две последние позиции меню работают и в более ранних версиях Mathcad: Disable Evaluation — отключение оператора и Optimize — поиск решения через аналитические преобразования (через поиск аналитического решения).

Рис. 4

В среде Mathcad 8 пользователю предоставлена возможность выбора численного метода и при решении других задач. Так, если щелкнуть правой кнопкой мыши по оператору определенного интеграла (рис. 3), то “выпадает” список методов численного интегрирования. При этом система Mathcad сама может выбрать (переключатель Smart Select — “сообразительный” выбор) метод, дающий оптимальное соотношение точности и скорости вычисления.

Рис. 5

Но вернемся к задаче оптимизации на рис. 2. Чехов утверждал, что если в первом акте пьесы на стене висит ружье, то в последнем акте оно должно выстрелить. Если в протоколе на рис. 2 “висит” ключевое слово given, то в протоколе на рис. 4 оно “стреляет”: там показано, что может быть “дано” в условиях задачи.

На рис. 4 решается одна из разновидностей задач линейного программирования — транспортная задача: необходимо ежедневно с первого склада перевозить в два магазина 50 телевизоров, а со второго склада — 70. При этом первый магазин продает за день 40 телевизоров, а второй — 80. Известны затраты на перевозку телевизоров со складов в магазины (четыре константы: 1200 у.е. при перевозке одного телевизора с первого склада в первый магазин, 1600 — с первого склада во второй магазин, 800 — со второго склада в первый магазин и 1000 — со второго склада во второй магазин).

Рис. 6

Спрашивается, как нужно организовать перевозки (найти значения переменных x1, x2, x3 и x4), чтобы затраты были минимальны. На рис. 4 дан ответ. Парадокс задачи в том, что по самому дешевому маршруту (со второго склада в первый магазин) ничего не возят (x3 = 0). Этим парадоксом может воспользоваться владелец автотранспортного предприятия, изменив план перевозок и максимизировав свою прибыль (рис. 5 уже с функцией maximize).

Транспортная задача, приведенная на рис. 4 и 5, кочует из одного учебника по математике для экономистов в другой. Вышеотмеченный парадокс замечают все авторы, обращая внимание на ценность математического подхода к решению задачи вместо обыденного, интуитивного (сначала перевезем сколько можно угля по дешевому маршруту, а потом примемся за остаток). Но парадокс задачи и в другом: эта задача сводится к решению одного-единственного уравнения:

x1 + x3 = 40,

которое можно вывести и вручную, и с помощью средств символьной математики Mathcad (рис.6): x1=40, x3=0 — затраты на перевозки минимальны; x1=0, x3=40 — максимальны.

На рис. 7 предоставлен протокол решения “чистокровной” задачи линейного программирования: требуется спланировать выпуск стульев первого типа (искомая переменная N1) по цене 8 у.е. и второго типа (N2) по цене 12 у.е., ориентируясь на ограничения по ресурсам: 440 погонных метров досок, 65 кв. м обивочной ткани и 320 человеко-часов трудовых резервов. У нас две целевые функции: F1 — общая число стульев и F2 — их стоимость. Задача решается по первой целевой функции (п.1 на рис. 7) с помощью встроенной в Mathcad 8 функции maximize (ответ N1=110, N2=40) и по второй целевой функции графически (N1=60, N2=80 — см. п.2 на рис. 7, где область существования решений оконтурена красными линиями, а максимум целевой функции — синей).

Механизм формирования графиков на рис. 7 скрыт от посторонних взоров. В Mathcad-документе любую область можно выделить, а затем запереть ее (Locking) для защиты от несанкционированного доступа. В Mathcad 8 выделенную область можно, кроме того, “захлопнуть” (Collapse), что и сделано в документе на рис. 7 (см. черту ).

Технология решения в среде Mathcad оптимизационных задач (без ограничений — см. рис. 2 и с ограничениями — рис. 4, 5 и 7) очень схожа с технологией, принятой в среде электронных таблиц Excel (рис.8, где решается наша транспортная задача). И там и там необходимо сформировать целевую функцию, которую следует либо максимизировать, либо минимизировать, либо сделать равной заданной величине. Отмечаются переменные, влияющие на целевую функцию, и формируются ограничения. Отличия в деталях — в среде Excel, например, можно переменные менять целочисленно или дискретно. В задачах, решение которых отображено на рис. 4, 5 и 7, коэффициенты подобраны так, чтобы ответ не получался целочисленным. В общем же случае могут выдаваться и доли телевизора или стула...

В среде Mathcad 8 появились дополнительные возможности при реализации систем алгебраических уравнений конструкцией given...find. Теперь переменные системы могут быть элементами вектора. Кроме того, если у системы несколько решений (корней), то начальное приближение можно задать вектором с n элементами, фиксирующими n корней системы (рис. 9 — принцип “одним махом семерых побивахом”).

Рис. 8

 

Теперь между given...find можно вставлять до 50 булевых выражений, а не 32, как в среде Mathcad 7. Вычисления теперь ведутся и по двоичной системе (суффикс b), а не только по десятеричной, восьмеричной (o) и шестнадцатеричной (h):

Я уже отмечал в [1-2], что пакет Mathcad в своем развитии перенимает полезные качества электронных таблиц. В частности, в окне Insert Function (Вставить Функцию) встроенные функции разбиты на категории (Теория чисел/Комбинаторика,... Сортировка и т.д. — рис. 10), что существенно облегчает поиск нужной из почти трехсот встроенных. Но по-прежнему нет категории “Функции пользователя”.

Рис. 9

Кстати, о встроенных функциях. В Mathcad 8 Pro их стало на 28 больше. Часть из них расширяет математический аппарат пакета (например, gmean, которая возвращает среднее геометрическое элементов векторов); другая часть позволяет сидящему за компьютером навести порядок в своих переменных. Функция IsString, например, возвращает 1, если ее аргумент — текстовая переменная, и 0 — в противном случае.

Рис. 10

Пакет Mathcad 8 “набрался хорошего” не только от Excel (и это мы еще отметим), но и от Word. Так, например, в панели инструментов появились кнопки , позволяющие нумеровать или маркировать списки в комментариях. В Mathcad 8 улучшилась такая специфическая функция текстовых процессоров, как поиск и замена. Теперь эти операции можно проводить отдельно в комментариях или в формулах. Появилась возможность подстраивать набор кнопок на панелях инструментов.

Рис. 11

Существенным изменением в среде Mathcad 8 подверглась технология работы с трехмерной графикой (рис. 11). Тут также чувствуется сильное влияние Excel.

Во-первых, теперь ориентацию поверхности в виртуальном пространстве (вращение вокруг оси z и наклон к зрителю) можно менять не только через соответствующее диалоговое окно, но и через непосредственный контакт курсора мыши с поверхностью. Нажимается и держится левая кнопка мыши — мышь елозит по коврику, а поверхность “елозит” по экрану дисплея. Те же действия, произведенные с прижатой клавишей Shift, позволяют анимировать график. Щелчок по правой кнопке мыши вызывает обновленное и, можно сказать, существенно обогащенное меню работы с трехмерной графикой (рис. 11). Рассказывать обо всех новшествах работы с трехмерной графикой у автора нет возможности. Пока можно читателя только заинтриговать, отметив также важные детали:

В окне свойств трехмерного графика (см. рис. 11) теперь уже семь вкладок, что доводит богатство его форматирования до уровня Excel и даже MatLab.

 

Литература:

“Mathcad 7 Pro: что нового”. КомпьютерПресс, 8’97

“Советы тем, кто работает с Mathcad”. КомпьютерПресс, 3 и 8’98

Автор выражает глубокую признательность сотрудникам MathSoft, Inc. Стивену Финчу (Steven Finch) и Робу Дули (Rob Dooley) за предоставленную возможность прослеживания развития пакета Mathcad.

 

Мультимедийный обучающий курс по программе Mathcad

Фирма МультиМедиа Технологии (111250 Россия, Москва, ул. Энергетическая, 8/2, тел. (095) 362-74-86, факс 362-70-23, e-mail mmt@glas.apc.org) в июле 1998 года выпустила мультимедийный обучающий курс по программе Mathcad PLUS 6.0 (русская версия).

Рис. 12

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

Ниже на рис. 13 и 14 приведены два экрана дисплея, показывающие особенности работы с курсом.

Рис. 13

Демонстрация работы с Mathcad проводится на конкретных примерах из книги “Mathcad 7 Pro для студентов и инженеров” (М:. КомпьютерПресс, 1998). В курс вставлено множество контрольных вопросов по программе Mathcad. Если обучаемый затрудняется сразу на них ответить, то он может воспользоваться подсказкой — система указывает обучаемому, какие кнопки на клавиатуре или на панелях инструментов необходимо нажимать для решения поставленной задачи. Курс оборудован справочной системой по программе Mathcad, которая не только позволяет быстро найти ответ на вопрос, но и вызывает соответствующий пример, где используется данная особенность Mathcad. Этому же способствуют многочисленные гипертекстовые ссылки.

Рис. 14

Автор курса Очков Валерий Федорович (mailto:ochkov@twt.mpei.ac.ru) — преподаватель Московского энергетического института. Специалист в области создания тренажеров и обучающих программ для тепловых и атомных электростанций. Автор книг “Mathcad PLUS 6.0 для студентов и инженеров” (1996 г.) и “Mathcad 7 Pro для студентов и инженеров” (1998 г.), вышедших в издательстве “КомпьютерПресс”, и многочисленных журнальных публикаций по программе Mathcad (см. выше). Бета-тестер новых версий программы Mathcad. Участник проекта локализации пакета Mathcad для России на фирме Софтлайн (официальный представитель MathSoft’ Inc. в Росcии — www.softline.ru). В МЭИ Очков В.Ф. читает студентам лекции по Информатике, материалы которых легли в основу мультимедийного обучающего курса.

Hosted by uCoz