Математика. Контрольные, курсовые и дипломные работы от лучших авторов!

Тройной интеграл Скалярное и векторное поле Геометрический смысл производной Числовые ряды Введение в ТФКП Вычислить интеграл Задачи и примеры Изменить порядок интегрирования Физические приложения тройных интегралов

Компьютерная математика Mathematica электронный учебник Оглавление

 

Расширения графики — пакет Graphics

 

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

Анимация графиков различного типа — Animation

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

Подпакет Animation подключается автоматически и в ряде случаев не требует загрузки (хотя на всякий случай его лучше загрузить при использовании средств анимации). Пакет задает две важнейшие функции:

Рисунок 14.1 показывает пример подготовки к анимации простого графика — функции n*Sin [х] /х при n, меняющемся от 0.1 до 1 с шагом 0.1. Таким образом демонстрируется изменение данной функции по высоте (амплитуде).

При задании анимации есть небольшая проблема — Mathematica автоматически меняет масштаб с тем, чтобы график был наиболее представительным. Но для анимации это недопустимо, поэтому опцией PlotRange задан фиксированный масштаб для всех кадров анимации. Выполнив показанные на рис. 14.1 команды, можно наблюдать построение всех кадров — для n = 0.1,0.2,0.3,..., 1. 0. Первые три кадра анимации видны на рис. 14.1 снизу.

Теперь для наблюдения анимации достаточно двойным щелчком выделить первый рисунок. Будет видна быстрая смена кадров. Остановить анимацию и снова запустить ее можно нажатием клавиш Ctrl+Y. При выполнении анимации внизу окна документа появляются кнопки анимационного проигрывателя (рис. 14.2).

В работе рассматриваются возможности параллельных вычислений в рамках известного пакета компьютерной алгебры Mathematica™ и применение этих средств для разработки эффективных алгоритмов решения некоторых задач стохастической финансовой математики. Указанные возможности демонстрируются на примерах.

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

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

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

В данной работе рассматриваются возможности параллельных вычислений в рамках известного пакета компьютерной алгебры Mathematica™ [1] и применение этих средств для разработки эффективных алгоритмов решения некоторых задач стохастической финансовой математики. Указанные возможности демонстрируются на примерах.

2. Параллелизм в пакете Mathematica. Существующие средства работы с параллельными вычислениями достаточно сложны и нередко для их использования необходим высокий уровень подготовки, выходящий за пределы знаний обычного пользователя-вычислителя. С другой стороны, уже давно стали доступны развитые компьютерные математические пакеты (КМП) такие, как Axiom, Derive, Macsyma/Maxima, Maple, Mathematica, MuPad, Matlab, MathCAD и др., которые при решении различных прикладных задач, наряду со средствами реализации численных алгоритмов, позволяют применять символьные аналитические процедуры. Этот симбиоз существенно упрощает решение даже очень сложных задач. Но до последнего времени из-за специфики последних в таких математических пакетах отсутствовали средства организации параллельных вычислений. В этой области единственным исключением являлся пакет MuPad (разработчик – группа исследователей из Университета г.Падербон, Германия), который изначально создавался с ориентацией на возможность использования подобных вычислений.

Необходимость ускорения работы программ, написанных на входных языках КМП, вызвала бурный рост разработок в области включения в отдельные [2], (эклектичные) свободно распространяемые [3] и наиболее распространенные коммерческие КМП развитых средств параллельных вычислений, в т.ч. позволяющих производить вычисления на графических ускорителях с помощью техники GPGPU (OpenCL, CUDA). Не обошла данная тенденция и разработчиков такого популярного КМП как Mathematica [1, 4].

В пакете Mathematica работа с параллельными вычислениями представлена большим набором возможностей и команд. Первой версией пакета компьютерной алгебры (ПКА) Mathematica, которая стала поддерживать параллелизм, стала версия 7. До этого параллельные возможности пакета были выделены в отдельное расширение – Parallel Computing Toolkit. В версии 8 были также добавлены функции для работы с CUDA и OpenCL – фреймворками, позволяющими выполнять распределенные вычисления на CPU и GPU.

Отметим основные возможности и средства параллельных вычислений в пакете Mathematica:

– распределенная память, параллелизм мастер / слейв;

– возможность реализации на языке Mathematica;

– платформонезависимость;

– Mathlink–связь с удаленными ядрами;

– обмен символьными выражениями и программами с удаленными ядрами, а не только числами и массивами;

– гетерогенные сети, мультипроцессорные системы, LAN, WAN;

– планировщик виртуальных процессов или явное распределение процессов для доступных процессоров;

– виртуальная разделяемая память, синхронизация, блокировка;

– скрытие задержек;

– поддержка параллельного функционального программирования и автоматического распараллеливания;

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

Параллельные вычисления в среде пакета Mathematica основаны на запуске нескольких ядер и их контроле, что обеспечивает среду для параллельного программирования распределенной памятью.

Возможности для параллельных вычислений почти полностью реализованы на языке Mathematica и поэтому являются машинно–независимыми. Они были проверены на платформах Unix, Linux, Windows, Macintosh и хорошо подходят для работы на локальных машинах, в локальных сетях компьютеров, в т.ч. гетерогенных.

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

Существуют следующие способы подключения ядер в пакете Mathematica:

– локальные ядра (Local Kernels). Используются для организации параллелизма на том же компьютере, где находится мастер–процесс пакета Mathematica. Такой тип подключения подходит для многоядерной среды, и он является самым простым способом работы с параллельными вычислениями;

– легковесная сеть (The Lightweight Grid). Метод, используемый для организации параллельных вычислений на различных компьютерах с помощью мастер–процесса пакета Mathematica. В методе используется технология Wolfram Lightweight Grid для запуска Mathematica на удаленных машинах. Такой способ подходит для гетерогенных сетей и случаев, когда недоступны другие технологии управления;

– кластерная интеграция (Cluster Integration). Метод, используемый для организации параллельных вычислений на множестве компьютерах с помощью мастер–процесса пакета Mathematica, который интегрируется с большим числом сторонних кластерных технологий;

– удаленные ядра (Remote Kernels). Метод, используемый для организации параллельных вычислений на множестве компьютеров с помощью мастер–процесса пакета Mathematica, который использует технологию удаленного вызова оболочки для запуска и, как правило, сложнее для настройки и обслуживания.

ПКА Mathematica способен работать с большим количеством процессоров и ядер как локальных, так и удаленных [5]. Количество ядер для работы доступных пользователю определяется купленной лицензией.

Для начала работы с параллельными вычислениями необходимо подготовить пакет Mathematica, открыв пункт меню Evaluation ® Parallel Kernel Configuration, где есть возможность указать способ запуска ядер пакета Mathematica, выбрать действие при сбое ядер и настроить ядра в зависимости от способа подключения. Для отслеживания состояния ядер в пакете Mathematica доступно специальное средство – Parallel Kernel Status, которое можно вызвать в меню Evaluation ® Parallel Kernel Status. Для получения детальной информации о конфигурации системы для параллельных вычислений можно воспользоваться функцией (командой) SystemInformation[ ] и перейти на вкладку Parallel.

При работе с параллельными вычислениями главное ядро пакета Mathematica само запускает параллельные ядра ПКА Mathematica при вызове параллельной операции. При этом будут использованы те ядра, которые указаны в Parallel Kernel Configuration. По умолчанию используется тип подключения Local Kernels. Для просмотра сконфигурированных ядер используется команда $ConfiguredKernels.

Пакет Mathematica позволяет работать с параллельными ядрами так же, как с объектами:

mykernel = First[Kernels[ ]];

ParallelEvaluate[a===2, mykernel]

Функция ParallelEvaluate[cmd, kernel] отправляет команду cmd для расчетов на параллельное ядро kernel.

В ПКА Mathematica есть возможность использования автоматического распараллеливания команд и структур данных с помощью соответствующих команд:

функция Parallelize[expr] производит расчет выражения expr, используя автоматическое распараллеливание команд;

функция ParallelCombine[f, h[e1,e2,…], comb] производит параллельные расчеты суперпозиции функций f[h[e1,e2,…]], распределяя части по всем параллельным ядрам, и комбинирует все результаты в выражении comb;

функция ParallelMap[f, expr] параллельно применяет функцию f для каждого элемента на первом уровне в expr;

функция ParallelTable[expr, {imax}] паралле­льно генерирует список imax копий выражений expr;

функция ParallelSum[expr, {i, imax}] производит параллельный расчет суммы.

При параллельных расчетах возникает потребность использовать одновременный доступ к структурам, спискам и т.д. В ПКА Mathematica есть следующие средства позволяющие организовать одновременный доступ:

функция ParallelSubmit[expr] передает expr для расчетов на следующем доступном параллельном ядре и возвращает EvaluationObject – выражение, представляющее переданные расчеты;

функция WaitAll[expr] ожидает завершения всех расчетов, представленных EvaluationObject – выражениями expr, затем возвращает результирующее выражение.

 

Рис. 14.1. Демонстрация графика функции n*Sin[x]/x, меняющейся по высоте

Рис. 14.2. Стоп-кадр анимации графика функции n*Sin[x]/x

Проигрыватель имеет мнемонику кнопок, подобную мнемонике бытовых проигрывателей видеодисков. Есть кнопки пуска и остановки, реверса проигрывания, замедления и ускорения проигрывания. Последние особенно важны, поскольку на современных компьютерах анимация рисунков происходит слишком быстро и лишь ее замедление позволяет обеспечить хорошую визуализацию данного процесса. Число кадров анимации не должно быть меньше 8-10, иначе вместо плавного движения будут видны резкие скачки изображения.

Следующий пример иллюстрирует анимацию графика с параметрическим заданием функции:

ShowAnimation[Table[ Graphics[Line[{{0 0},

{Cos[t], Sin[t]}}], PlotRange -> {{-1, 1}, {-1, 1}}],

{t, 0, 2Pi, Pi/8}]]

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

Аналогичным образом осуществляется анимация трехмерных графиков поверхностей или фигур. Рисунок 14.3 показывает начало подготовки к анимации сложной поверхности, описываемой функцией Бесселя, аргумент которой меняется от кадра к кадру.

Рис. 14.3. Подготовка к анимации сложной трехмерной поверхности

Обратите внимание на применение функций Show и Graph!csArray для построения на одном графике сразу всех кадров (фаз) анимации. Порой этот набор кадров даже важней, чем анимация, длящаяся доли секунд или несколько секунд.

Рисунок 14.4 иллюстрирует следующий шаг анимации — исполнение функции ShowAnimation. Как и для предшествующих примеров, она строит последовательно все рисунки — кадры анимации.

Рис. 14.4. Подготовка кадров анимации сложной трехмерной поверхности

Запуск анимации выполняется, как уже было описано (рис. 14.5). При этом наблюдаются характерные колебания поверхности — пик ее проваливается вниз, образуя впадину, а затем снова выходит вверх. Внизу графика видны кнопки анимационного проигрывателя, работа с которым также была описана выше.

Для упрощения анимации сложных графиков в подпакете Animations задан ряд специализированных функций, которые приведены в приложении. Рисунок 14.6 поясняет задание анимации и построение начального кадра для параметрически заданной раскручивающейся спирали — используется функция MovieParametricPlot. Запустив начальный кадр, можно наблюдать раскручивание спирали.

Рис. 14.5. Один из стоп-кадров анимации сложной трехмерной поверхности

Рис. 14.6. Построение раскручивающейся спирали

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

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

Рис. 14.7. Построение вращающейся в пространстве фигуры — «гантели»

 

 

Компьютерная математика Maple 7 электронный учебник

Математические пакеты
Назначение пакетов расширения и обращение к ним
Обзор пакетов
Новые пакеты Maple 7
Получение информации о конкретном пакете
Пакеты функций комбинаторики
Пакет combinat.
Пакет combstruct
Пакет финансово-экономических функций finance
Пакет ортогональных многочленов orthopoly
Пакет для работы с суммами sumtools
Состав пакета sumtools
Работа с пакетом sumtools
Пакет реализации степенных разложений powseries

Курс лекций Сопротивление материалов