Смекни!
smekni.com

Программирование и разработка приложений в Maple (стр. 108 из 135)

> plot(x*sin(1/x) + 3*cos(2*x) + 2*sin(3*x)*cos(4*x) + 3*sin(x), x = 1..10);

В виду своей прозрачности особых пояснений данный фрагмент не требует. Читатель и сам может привести немало других более интересных примеров применения графической plot-функции Maple-языка.

Резюмируя сказанное, можно констатировать, что мы уже располагаем вполне достаточной информацией для создания 2D-графиков функциональных зависимостей, определяемых ведущими переменными Maple-выражений, функций и процедур, включая и пользовательские. В наиболее часто используемом исполнении для вывода 2D-ГО функциональных зависимостей используются конструкции вида plot(F(x), x= a..b). При этом, следует иметь в виду, что по конструкциям plot(F(x),x) и plot(F) выводится график функции F в диапазоне x= -10..10. В объеме рассмотренных графических средств можно как создавать 2D-ГО, так и производить ряд процедур по режиму их визуального представления в рамках декартовой системы координат, используя значения по умолчанию для остальных опций, управляющих 2D-графическим режимом. Рассмотрим вкратце данные средства, поддерживаемые набором опций, кодируемых в качестве четвертого необязательного аргумента plot-функции и называемых в дальнейшем графическими опциями.

Управления созданием и выводом 2D-ГО. В общем случае опция имеет вид уравнения, левая часть которого представляет ключевое слово, определяющее опцию, а правая – ее значение. Опции располагаются в произвольном порядке в качестве последнего фактического аргумента plot-функции, т.е. являются ключевыми. Функция plot имеет опции согласно следующей табл. 15, в которой каждая опция определяет соответственно:

Опция

Опция plot-функции определяет:

adaptive

разрешение на использование режима адаптивного вывода (true)

axes

используемый тип осей координат (normal)

axesfont

шрифт для меток маркируемых точек осей координат (Default)

color

расцветку кривых графиков функциональных зависимостей

coords

используемую систему координат (cartesian)

disconts

режим вывода зависимостей, имеющих точки разрыва (Default)

filled

режим закраски области между кривой и Х-осью

font

шрифт для текстовой информации ГО в виде [шрифт, стиль, размер]

labels

метки для осей системы координат (Default)

labelfont

шрифт для меток осей координат в виде [шрифт, стиль, размер]

linestyle

стиль определения линий функциональных зависимостей (solid)

numpoints

минимальное число генерируемых точек для кривой (49)

resolution

разрешающую способность монитора по горизонтали в пикселях (200)

sample

список значений параметров для инициализации plot-функции

scaling

режим шкалирования ГО (unconstrained)

style

стиль определения линий функциональных зависимостей (Line)

symbol

тип символов для точек графика в point-режиме (Point)

thickness

толщину линий функциональных зависимостей (0)

tickmarks

минимальное число маркируемых точек по X,Y-осям координат

title

заголовок для графического объекта (None)

titlefont

шрифт для заголовка графического объекта (Default)

view

минимальные и максимальные координаты выводимых точек ГО

xtickmarks

минимальное число маркируемых точек по X-оси координат (Default)

ytickmarks

минимальное число маркируемых точек по Y-оси координат (Default)

Смысл большинства опций достаточно прозрачен, однако более детально можно с ними ознакомиться в справке по пакету. Тогда как целый ряд особенностей их применения с соответствующими рекомендациями достаточно детально рассмотрены в [12].

Наряду с базовыми, Maple-язык располагает целым рядом модульных средств, обеспечиваемых пакетными модулями plots (56) и plottools (36), где в скобках указано количество поддерживаемых ими графических функций для Maple 10 (как правило, с ростом номера релиза пакета растет и набор его функциональных средств). Ряд средств данных модулей будет рассмотрен ниже, здесь же пока ограничимся polarplot-функцией из plots-модуля (см. прилож. 1 [12]). Как известно, вызов функции, определенной в пакетном модуле с Id-идентификатором, производится тремя основными способами, а именно:

(1) with(Id) (2) Id[<Функция>](<Аргументы>) (3) with(Id, <Функция>)

Первый способ обеспечивает непосредственный доступ сразу ко всем средствам Id-модуля (на весь текущий сеанс), вызовы которых становятся аналогичными вызовам встроенных функций Maple-языка. Поэтому, по with(plots)-предложению получаем доступ ко всем функциям plots-модуля, включая polarplot-функцию следующего формата: polarplot([r(t), alpha(t) {, t = a..b}] {, <Опции>})

где: r(t) и alpha(t) параметрически определяют радиус и полярный угол соответственно, а третий элемент списка - диапазон изменения параметра (полярного угла). При отсутствии третьего элемента списка в качестве диапазона изменения угла по умолчанию полагается значение -Pi..Pi. Последующие формальные аргументы функции определяют plotопции, рассмотренные выше. В качестве первого аргумента polarplot-функции может выступать список/множество функций, выводимых в единой системе координат. Следующий пример иллюстрирует использование polarplot-функции для создания графика функции в полярной системе координат.

> plots[polarplot]([cos(t), sin(t), t = 0..4*Pi], color = black, thickness = 2, axesfont = [TIMES, BOLD, 11]);

Графические 2D-ГО-структуры данных. Для представления графических объектов пакет использует специальную структуру данных, называемую в дальнейшем 2D_ГО-структурой. Данная структура генерируется графической функцией plot и ей подобными. На основе данной структуры строятся графические примитивы, которые затем передаются драйверам заданных устройств с целью вывода результирующего ГО. Принципиальная схема визуализации графического 2D-ГО представлена на следующем рис. 1.

Рис. 1. Принципиальная схема визуализации графического 2D-ГО

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

> PS:= plot(x, x = 0..1, numpoints = 3, adaptive = false, axesfont = [TIMES, BOLD, 10]);

PS := PLOT(CURVES([[0., 0.], [0.523131699999999977, 0.523131699999999977], [1., 1.]],

COLOUR(RGB, 1.0, 0., 0.)), AXESLABELS("x", ""), AXESTICKS(DEFAULT, DEFAULT,

FONT(TIMES, BOLD, 10)), VIEW(0. .. 1., DEFAULT))

В данном примере переменной PS присваивается вызов plot-функции, определяющей график функции y = x на [0, 1]-интервале с тремя опорными точками (numpoints), с отменой адаптивного механизма (adaptive) и заданным шрифтом (axesfont) для разметки осей координат. Результатом вычисления данной переменной является возврат соответствующей plot-функции 2D_ГО-структуры, из рассмотрения которой следует, что она содержит тип ГО (CURVES - кривая), список координат точек кривой, а также установки для пяти графических опций COLOUR, AXESLABELS, AXESTICKS, FONT и VIEW. В общем случае 2D_ГО-структура имеет следующую простую организацию:

<тип ГО>(<Объектная информация> {, <Локальная информация>})

где тип ГО является одним из: PОINTS (точки), CURVES (кривые), POLYGONS (многоугольники) и TEXT (текст). Объектная информация содержит координаты опорных точек для соответствующего типа ГО, тогда как локальная информация необязательна и содержит установки графических опций для данного конкретного ГО. Формат объектной информации определяется типом ГО и в зависимости от него принимает вид: POINTS: POINTS([x1,y1],[x2,y2],...[xn,yn]) - множество опорных точек в плоскости;

CURVES: CURVES([[x11,y11],...[x1n,y1n]], [[x21,y21],...[x2n,y2n]],...[[xm1,ym1],...[xmn,ymn]]) - набор из m кривых, определяемых опорными точками на плоскости;

POLYGONS: POLYGONS([[x11, y11],...[x1n, y1n]], [[x21, y21],...[x2n, y2n]],...[[xm1, ym1],...

[xmn,ymn]]) - набор из m многоугольников, определяемых опорными точками; TEXT: TEXT([x,y], "<строка>") - текстовая строка с опорной (x,y)-точкой; в общем случае в качестве строки могут выступать выражения {string, symbol, name}-типа.

Для двухмерного случая 2D_ГО-структура наряду с обязательной объектной информаци-й может содержать следующие опции: AXESSTYLE, AXESLABELS, FONT, SYMBOL, STYLE, VIEW, COLOUR, AXESTICKS, LINESTYLE, THICKNESS, SCALING, TITLE, при этом, с появлением новых релизов список опций может расширяться. Пользователь через необязательную локальную информацию может заменять глобальные установки указанных опций на период воспроизведения ГО. В частности, COLOUR-опция в структуре может определять отдельный цвет для каждого из составляющих общий ГО подобъектов; например, для каждой кривой многофункционального графика может быть определен свой цвет. При этом, набор допустимых для 2D_ГО-структуры опций определяется типом представляемого ею графического объекта.