Графика в системе Maple V
1. Двумерная графика
1.1. Основные возможности двумерной графики
Лидером по графическим возможностям среди математических систем для персональных компьютеров долгое время считалась система Mathematics 2. Однако в реализации Maple V R4 возможности графики системы Maple V приблизились к таковым у системы Mathematica 2 и даже Mathematica 3. Они настолько обширны, что, будь математическая графика Maple V единственным назначением системы, оно вполне оправдало бы ее разработку.
Графика Maple V реализует все мыслимые (и даже «немыслимые») варианты математических графиков — от построения графиков простых функций в Декартовой и в полярной системах координат до создания реалистических образов сложных пересекающихся в пространстве фигур с их функциональной окраской. Возможны наглядные графические иллюстрации решений самых разнообразных уравнений, включая системы дифференциальных уравнений.
В само ядро Maple V встроено ограниченное число функций графики. Это прежде всего функция для построения двумерных графиков (20-типа) — plot и функция для построения трехмерных графиков (ЗО-типа) — plot3d. Они позволяют строить графики наиболее распространенных типов. Для построения графиков специального типа (например, в виде векторных полей градиентов, решения дифференциальных уравнений, построения фазовых портретов и т.д.) в пакеты расширения системы Maple V включено большое число различных графических функций. Для их вызова необходимы соответствующие указания.
Вообще говоря, средства для построения графиков принято считать графическими процедурами или операторами. Однако мы сохраним за ними наименование функций в силу двух принципиально важных свойств:
• графические средства Maple V возвращают некоторые графические объекты, которые размещаются в окне документа в строке вывода или в отдельном графическом объекте;
• эти объекты можно использовать в качестве значений переменных, т.е. переменным можно присваивать значения графических объектов и выполнять над ними соответствующие операции (например, с помощью функции show выводить на экран несколько графиков).
Графические функции заданы таким образом, что обеспечивают построение типовых графиков без какой-либо особой подготовки. Все, что для этого нужно, это указать функцию, график которой строится, и пределы изменения независимых переменных. Однако с помощью дополнительных необязательных параметров — опций можно существенно изменить вид графиков, например, изменить стиль и цвет линий, вывести титульную надпись, изменить вид координатных осей и т.д.
13.1.2. Основная функция двумерной графики — plot
Для построения двумерных графиков служит функция plot. Она задается в виде:
plot(f, h, v) или plot(f, h, v, о),
где f — функция (или функции), чей (чьи) график(и) строятся, h — переменная с указанием области ее изменения по горизонтали, v — заданная опционально переменная с указанием области изменения по вертикали, о — опция или набор опций, задающих стиль построения графика (толщину и цвет кривых, тип кривых, метки на них и т.д.).
Самыми простыми формами задания этой функции служат:
plot(i,xmin..xmax) — построение графика функции f, заданной только именем;
plot(f(x),x=xrnin..xmax) — построение графика функции f(x).
Диапазон изменения независимой переменной х задается как xmin..xmax, где xmin и гпах — минимальное и максимальное значение х, .. (две точки) — составной символ, указывающий на изменение независимой переменной. Разумеется, имя х здесь дано условно — независимая переменная может иметь любое допустимое имя.
Для двумерной графики возможны следующие опции:
axes Вывод различных типов координат (axes=NORMAL — обычные оси, выводятся по умолчанию, axes=BOXES — график заключается в рамку с оцифрованными осями, axes=FRAME — оси в виде перекрещенных линий и axes=NONE — оси •не выводятся). color Задает цвет кривых (см. далее). coords Задание типа координатных систем (см. далее). numpoints Задает минимальное количество точек графика (по умолчанию numpoints=49). resolutions Задает горизонтальное разрешение устройства вывода (по умолчанию resolutions-200, параметр используется при отключенном адаптивном методе построения графиков). scaling Задает масштаб графика CONSTRAINED (сжатый) или UNCONSTRAINED (несжатый — по умолчанию). size Задает размер шрифта в пунктах. style Задает стиль построения графика (POINT — точечный, LINE — линиями). symbol Задает вид символа для точек графика (возможны значения BOX — прямоугольник, CROSS — крест, CIRCLE — окружность, POINT — точка, DIAMOND — ромб). title Задает построение заголовка графика (title=«string», где string — строка). titlefont Определяет шрифт для заголовка (так же как и для font). labelfont Определяет шрифт для меток (labels) на осях координат (так же как и для font). thickness Определяет толщину линий графиков (0, 1,2,3, по умолчанию 0). view=[A, B] Определяет максимальные и минимальные координаты, в пределах которых график будет отображаться на экране, А = [xmin..xmax], B=[ymin..углах] (по умолчанию отображается вся кривая). xtickmarks Задает минимальное число отметок по оси X. ytickmarks Задает минимальное число отметок по оси Y.
В основном задание параметров особых трудностей не вызывает. За исключением задания титульной надписи с выбором шрифтов по умолчанию — в этом случае не всегда поддерживается вывод символов кириллицы (русского языка). Подбором подходящего шрифта эту проблему удается решить.
13.1.3. Задание координатных систем 20-графиков и их пересчет
В версии Maple V R4 параметр coords задает 15 типов координатных систем для двумерных графиков. По умолчанию задана прямоугольная (Декартовая) система координат (coords=cartesian). При использовании других координатных систем координаты точек для них (u,v) преобразуются в координаты (х,у) как (u, v) -> (x, у). Ниже приведены наименования систем координат (значении параметра coords) и соответствующие формулы преобразования:
bipolar
х = sinh(v)/(cosh(v)-cos(u)) у = sin(u)/(cosh(v)-cos(u))
cardiod
х = [/2*(u'2-v~2}/(u'2+v'2Y2 у = u*v/(ir2+v"2)-2
cartesian
х = u у = v
cassinian
x = a*2«(l/2)/2*((exp(2*u)+2*exp(l^)*cos(v)+l)«(l/2) +
exp(u)*cos(v)+l)"(l/2) у = a*2»(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)"(l/2) -
exp(u)*ws(v)-l)'-(/2)}
elliptic
x = cosh(u)*cos(v) у = sinh(u)*sin(v)
hyperbolic
x = ((iT2+v-2)-(l/2)+u)-(l/2) у = ((^2+у'2Г(/2)-иУ(1/2)
invcassinian
x = a*2~(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)"(l/2) +
exp(u)*cos(v)+l)»(l/2)/(exp(2*u)+2*exp(u)*cos(v)+l)-(l/2) у = a*2»(l/2)/2*((exp(2*u)-^2*exp(u)*cos(v)+l)-(l/2) -
exp(u)*cos(v)-l)»(l/2)/(exp(2*u)+2*exp(u)*cos(v)+l)-(l/2)
invelliptic
x = a*cosh(u)*cos(v)/(cosh(u)"2-sin(v)'2) у = a*sinh(u)*sin(v)/(cosh(u)"2-sin(v)»2)
logarithmic
x = ii/Pi*ln(u'2+v'2) у = 2*a/Pi*arctan(v/u)
logcosh
x = a/Pi*n(c.osh(uy2-sm(vy2} у = 2*a/Pi*arctan(tanh(u)*tan(v))
maxwell
x = a/Pi*(u+l+exp(u)*cos(v)) у = a/Pi*(v+exp(u)*sin(v))
parabolic
x = (u'2-v^2)/2 у = u*v
I'I-
polar
x = u*cos(v) у = u*sin(v)
rose
x = ((u'2+v'2Y(/2)+ur(/2)/(u~2+v'2)-(i/2) у = ((^2+v'2)-(/2)-u)-(/2)/(u'2+^2r(/2)
tangent
x= u/tu^+v^) у = v/(iT2+v'2)
13.1.4. Управление стилем и цветом линий 20-графиков
Maple V R4 позволяет воспроизводить на одном графике множество кривых. При этом возникает необходимость из выделения. Для этого можно использовать построение линии разными стилями и разными цветами и разной толщиной линий. Набор средств выделения кривых позволяет уверенно различать их как на экране цветного дисплея и распечатках цветным струйным принтером, так и при печати монохромными принтерами.
Параметр style позволяет задавать следующие стили для линий графиков:
SPISV = POINT или point — график выводится по точкам;
LINE или line — график выводится линией.
Если задано построение графика точками то параметр symbol позволяет представить точки в виде различных символов, например, прямоугольника, креста, окружности или ромба.
Другой параметр color позволяет установить обширный набор цветов линий графиков:
aquamarine black blue navy coral cyan brown gold green gray grey khaki magenta maroon orange pink plum red sienna tan turquoise violet wheat white yellow
Различные цветовые оттенки получаются использованием RGB-комбинаций базовых цветов: red — красный, green — зеленый, blue — синий. Приведем перевод ряда других комбинированных цветов: black — черный, white — белый, khaki — цвет «хаки», gold — золотистый, orange — оранжевый, violet — фиолетовый, yellow — желтый и т.д. Перевод цветов некоторых оттенков на русский язык не всегда однозначен и потому не приводится. Средства управления стилем графиков дают возможность легко выделять различные кривые на одном рисунке, даже если для выделения не используются цвета.
13.2. Примеры построения основных типов 20-графиков
13.2.1. Построение графиков одной функции
При построении графика одной функции она записывается в явном виде на место шаблона f. Примеры построения графика одной функции представлены на рис. 13.1. Обратите внимание на то, что график функции sin(x)/x строится без
характерного провала в точке х=0, который наблюдается при построении графиков этой функции многими программами. Он связан с используемым в них правилом — функция задается равной нулю, если ее числитель равен нулю. Данная функция в этой точке дает устранимую неопределенность 0/0->1, что и учитывает графический процессор системы Maple V.
Рис. 13.1. Примеры построения графиков одной функции.
При построении графиков одной функции могут быть введены указатели масштабов и различные опции, например задания цвета кривой, толщины линии, которой строится график функции и другие параметры. К примеру, запись в списке параметров со1ог=0 (не документированная возможность) или запись color=black задают вывод кривых черным цветом, а запись thinkness=2 задает во втором примере рис. 13.1 построение графика линией, удвоенной в сравнении с обычной толщиной.
13.2.2. Управление масштабом графиков
Для управления масштабом графиков служат указатели масштабов. В ряде случаев их можно не применять и система автоматически задает приемлемые масштабы. Однако их явное применение позволяет задать масштаб «вручную». Иногда соответствующее задание масштаба случайно или целенаправленно ведет к отсечению части графика — например на рис. 13.2 в первом примере отсечена верхняя часть графика.
Правильный выбор масштаба повышает представительность графиков функций. Рекомендуется вначале пробовать строить такие графики с автоматическим масштабированием, а уже затем использовать указатели масштабов.
13.2.3. Графики функций в неограниченном масштабе
Изредка встречаются графики функций цх), которые надо построить при изменении значения х от нуля до бесконечности или даже от минус бесконечности до
Рис. 13.2. Построение графиков функции с явным указанием масштаба.
плюс бесконечности. Бесконечность в таких случаях задается в указателях масштаба как особая константа infinity. В этом случае масштаб автоматически меняется по ходу построения графика. Рис. 13.2 (второй пример) иллюстрирует сказанное. Пересчет значении координаты х, устремляющейся в бесконечность, выполняется с помощью функции для арктангенса.
13.2.4. Графики функций с разрывами
Некоторые функции, например tan(x), имеют при определенных значениях х разрывы, причем случается что значения функции в этом случае устремляются в бесконечность. Функция tan(x), к примеру, в точках разрывов устремляется к +°° и -°°. Построение графиков таких функций нередко дает плохо предсказуемые результаты. Графический процессор Maple V не всегда в состоянии определить оптимальный масштаб по оси ординат, а график функции выглядит весьма непредставительно — если не сказать безобразно (см. рис. 13.3 — первый пример).
Среди параметров функции plot есть специальный параметр discont. Если задать его значение равным true, то качество графиков существенно улучшается — см. рис. 13.3 — второй пример. Улучшение достигается разбивкой графика на несколько участков, в которых функция непрерывна, и более тщательным контролем за масштабом.
13.2.5. Построение графиков нескольких функций на одном рисунке
Важное значение имеет возможность построения на одном рисунке графиков нескольких функций. В простейшем случае (рис. 13.4 первый пример) для построения таких графиков достаточно перечислить нужные функции и установить для них общие масштабы.
Рис. 13.3. Построение графиков функции с разрывами.
Обычно графики разных функций автоматически строятся разными цветами. Но они не всегда удовлетворяют пользователя — например, при распечатке графиков монохромным принтером некоторые кривые могут выглядеть слишком блеклыми или даже не пропечататься вообще. Используя списки параметров color (цвет линии) и style (стиль линий) можно добиться выразительного выделения кривых — это показывает второй пример на рис. 13.4.
Рис. 13.4. Графики трех функции на одном рисунке.
На рис. 13.5 показан еще один пример такого рода. Здесь построен график функции sin(x)/x и график ее полиномиальной аппроксимации. Она выполняется настолько просто, что соответствующие функции записаны прямо в списке параметров функции plot.
Рис. 13.5. График функции sin(x)/x и ее полиномиальной аппроксимации.
В данном случае сама функция построена сплошной линией, а график полинома — крестиками. Хорошо видно, что при малых х аппроксимация дает высокую точность, но затем с ростом х погрешность ее резко возрастает.
Рис. 13.6 показывает построение нескольких любопытных функций, полученных с помощью комбинаций элементарных функций. Эти комбинации позволяют получать периодические функции, моделирующие сигналы стандартного вида в технических устройствах: в виде напряжения на выходе двухполупериодного выпрямителя, симметричных прямоугольных колебаний (меандр), пилообразных и треугольных импульсов, треугольных импульсов со скругленной вершиной.
В этом рисунке запись axes=NONE убирает координатные оси. Обратите внимание, что смещение графиков отдельных функций вниз с целью устранения их наложения достигнуто просто прибавлением к записи каждой функции некоторой константы.
13.2.6. Построение графиков функций, заданных отдельными точками
Показанный на рис. 13.5 график полинома, построенный крестиками, не означает, что полином представлен отдельными точками. В данном случае просто выбран стиль линии в виде точек, представленных крестиками. Однако, часто возникает необходимость построения графиков функции, которые представлены просто совокупностью точек. Она может быть создана искусственно, как на рис. 13.7, либо просто задаваться списком координат х и значений функции.
Рис. 13.6. Построение графиков нескольких любопытных функции.
Рис. 137. Формирование списка отдельных точек функции и их построение на графике.
В данном случае переменная Р имеет вид списка, в котором попарно перечислены координаты точек функции sin(x). В этом нетрудно убедиться, заменив знак «:» после выражения, задающего Р на знак «;». Далее по списку Р построен график точек в виде крестиков, которые отображают отдельные значения функции sin(x).
На рис. 13.8 показано построение графиков функций по точкам при явном задании функции списком координат ее отдельных точек. В первом примере эти
точки соединяются отрезками прямых, так что получается кусочно-линейный график. Видно также, что указание типа точек после указания стиля линии игнорируется, — а жаль, было бы неплохо, чтобы наряду с кусочно-линейной линией графика строились и выделенные окружностью точки.
Рис. 13.8. Построение графика функции явно заданной отдельными точками.
Во втором примере рис. 13.8 показано построение только точек заданной функциональной зависимости. Они представлены маленькими кружками.
Читателю предлагается совместить самому оба подхода к построению графиков по точкам и создать график в виде отрезков прямых, соединяющих заданные точки функции, представленные кружками или крестиками.
13.2.7. Построение графиков функций, заданных их именами
Способность Maple V к упрощению работы пользователя просто поразительна — жаль только, что многие возможности этого становятся ясными после основательного изучения системы, на что уходят увы не дни, а месяцы, а то и годы. Применительно к графике одной их таких возможностей является построение графиков функций, заданных только их функциональными именами — даже без указания параметров в круглых скобках. Такую возможность наглядно демонстрирует рис. 13.9.
Этот пример показывает, что возможно построение графиков функций даже без применения в команде plot указателей масштабов. При этом масштаб по горизонтальной оси устанавливается равным по умолчанию -10..10, а по вертикальной оси устанавливается автоматически в соответствии с экстремальными значениями функций в указанном диапазоне изменения независимой переменной — условно х.
Рис. 13.9. Построение графиков четырех функции, заданных только их именами.
13.2.8. Построение графиков функции с ординатами, заданными вектором
Часто возникает необходимость построения графика точек, ординаты которых являются элементами некоторого вектора. Обычно при этом предполагается равномерное расположение точек по горизонтальной оси.
Пример построения такого графика дан на рис. 13.10.
Из этого примера нетрудно заметить, что данная задача решается составлением списка парных значений координат исходных точек — к значениям ординат точек, взятых из вектора добавляются значения абсцисс. Они задаются чисто условно, поскольку никакой информации об абсциссах точек в исходном векторе нет. Так что фактически строится график зависимости ординат точек от их порядкового номера п.
13.2.9. Построение графиков функций, заданных процедурами
Некоторые виды функций, например кусочные, удобно задавать процедурами. Построение графиков функций, заданных процедурами, не вызывает никаких трудностей и иллюстрируется рис. 13.11.
Здесь, пожалуй, полезно обратить внимание на то, что когда в функции plot указывается имя процедуры без списка ее параметров, то указатель масштаба должен просто указывать пределы графических построений по оси х.
Рис. 13.10. Построение графика точек с ординатами, заданными элементами вектора.
Рис. 13.11. Построение графика функций, заданных процедурами
13.2.10. Построение графиков функций, заданных функциональными операторами
Еще одна «экзотическая» возможность функции plot — построение графиков функций, заданных функциональными операторами. Она иллюстрируется рис. 13.12.
Рис. 13.12. Построение графиков функции, заданной функциональными операторами.
Имена функции (без указания списка параметров в круглых скобках тоже по существу являются функциональными операторами. Так что и они могут использоваться при построении графиков упрощенными способами.
13.2.11. Построение графиков функций, заданных параметрически
В ряде случаев для задания некоторых зависимостей используются заданные параметрически уравнения, например x=fl(t) и y=f2(t) при изменении переменной t в некоторых пределах. Точки (х,у) наносятся на график в Декартовой системе координат и соединяются отрезками прямых. Для этого используется функция plot в следующей форме:
plot([fl(t),f2(t),t=tmin..tmax],h,v,p)
Если функции fl(t) и f2(t) содержат периодические функции (например, тригонометрические), то для получения замкнутых фигур диапазон изменения переменной t задается обычно 0..2*Pi или -Pi..Pi. К примеру, если задать в качестве функций fl(t) и f2(t) функции sin(t) и cos(t), то будет получен график окружности. Рис. 13.!3 показывает другие, чуть менее тривиальные примеры построения графиков такого рода.
Задание указателей масштаба h и v, а также параметров р не обязательно. Но, как и ранее, позволяет получить вид графика, удовлетворяющий всем требования пользователя.
Рис. 13.13. Построение функции, заданных параметрически.
13.2.12. Построение графиков функций в полярной системе координат
Графики в полярной системе координат представляют собой линии, которые описывает конец радиус вектора r(t) при изменении угла t в определенных пределах — от tmin до tmax. Построение таких графиков производится также функцией plot, которая записывается в следующем виде:
plot([r(t),theta(t),t=tmin..tmax],h,v,p,coords=polar)
Здесь существенным моментом является задание полярной системы координат опцией coords=polar. Рис. 13.14 дает примеры построения графиков функций в полярной системе координат.
Графики параметрических функций и функций в полярной системе координат отличаются огромным разнообразием. Снежинки и узоры мороза на стеклах, некоторые виды кристаллов и многие иные физические объекты подчиняются математическим закономерностям, положенным в основу построения таких графиков.
13.3. Построение ЗО-графиков с помощью функция plot3d
13.3.1. Особенности применения функции plot3d
Для построения графиков трехмерных поверхностей Maple имеет встроенную в ядро функцию plot3d. Она может использоваться в следующих форматах:
Рис. 13.14. Построение графиков функций в полярной системе координат.
plot3d(exprl, x=a..b, y=c..d,p) plot3d(f, a..b, c..d,p)
plot3d([exprf,exprg,exprh], s=a..b, t=c..d,p) plot3d([f,g,h], a..b, c..d,p).
В двух первых формах plot3d применяется для построения обычного графика одной поверхности, в других формах — для построения графика с параметрической формой задания поверхности. В приведенных формах: f, g и h — функции, expri — выражение, отражающее зависимость от х и у, exprf, exprg и exprh — выражения, задающие поверхность параметрически, s, t, а и b — числовые константы действительного типа, end — числовые константы или выражения действительного типа, х, у, s и t — имена независимых переменных и р — параметры-опции. Параметры для функции plot3d задаются аналогично их заданию для функции plot.
13.3.2. Параметры функции plot3d
С помощью параметров р можно в широких пределах управлять видом трехмерных графиков, выводя или убирая линии каркасной сетки, вводя функциональную окраску поверхностей, меняя угол их обзора и параметры освещения, изменяя вид координатных осей и т.д.
Следующие параметры функции plot3d задаются аналогично их заданию для функции plot:
axesfont font color coords font labelfont linestyle numpoints scaling style symbol thickness title titlefont
Однако функция plot3d имеет ряд дополнительных специфических параметров:
ambientlight=[r,g,o] Задает интенсивность красного (red), зеленого (green) и синего (blue) цветов в относительных единицах (от 0 до 1). axes=f Задает вид координатных осей (BOXED, NORMAL, FRAME и NONE, по умолчанию NONE). grid=[m,nl Задает число линии каркаса поверхности. gridstyle=x Задает стиль линий каркаса х ( 'rectangular' или 'triangular'). labels=[x,y,z] Задает надписи по осям (х, у и z — строки, по умолчанию пустые). light=[phi,theta,r,g, b] Задает углы, под которыми расположен источник освещения поверхности и интенсивности составляющих (г, g и b) цвета. lightmodel=x Задает режим яркости (соответственно, none", 'lightl', 'light2', 'light3' и 'light4'). orientation=[theta, phi] Задает углы ориентации поверхности (по умолчанию 45 градусов). projection=r Задает перспективу при обзоре поверхности (г может быть числом 0 или 1, задающим включение или выключение перспективы, а также одной из строк 'FISHEYE', 'NORMAL', или 'ORTHOGONAL' (это соответствует численному значению г 0, 0.5, или 1, соответственно, причем по умолчанию задано projection = ORTHOGONAL). shading=s Задает направления, по которым меняется цвет функциональной окраски (значения s могут быть XYZ, XY, Z, ZGREYSCALE, ZHUE, NONE). tickmarks=[l,n,m] Задает характер маркировки по осям х, у и z (числа 1, п и m имеют значения не менее 1). view=zmin..zmax или Ixmin..xmax,ymin.. ymax,zmin..zmax] Задает минимальные и максимальные координаты поверхности для ее видимых участков.
13.3.3. Выбор и пересчет координат ЗО-графиков
Для трехмерных графиков возможно задание 31-го типа координатных систем с помощью параметра соога5=Тип_координатнои_системь1. Поскольку на экране дисплея поверхность отображается только в прямоугольной системе координат и характеризуется координатами х, у и z, то для представления поверхности, заданной в иной системе координат с координатами u, v и w используются известные [46,47] формулы для преобразования (u, v, w) --> (х, у, z). Ниже представлены типы координатных систем для трехмерной графики и соответствующие формулы преобразования:
bipolarcylindrical
х = a*sinh(v)/(cosh(v)-cos(u)) у = a*sin(u)/(cosh(v)-cos(u)) z = w
bispherical
х = sin(u)*cos(w)/d у = sin(u)*sin(w)/d z = sinh(v)/d (где d = cosh(v) - cos(u) )
cardiodal
x = u*v*cos(w)/(lГ2+v»2)-2 у = u*v*sin(w)/(ir2+v"2r2 z = (u"2-v'2)/2/^2+v'2)-2
cardiodcylindrical
x = (u'2-v~2)/2/(u'-2+v~2)'-2 у = u*v/(u'2+v-2)"2 z = w
casscylindrical
x = a*2~(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)-(l/2)+exp(u)*cos(v)+l)-(l/2) y= a*2«(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)"(l/2)-exp(u)*cos(v)-l)"(l/2) z = w
confocalellip
x = ((a~2-u)*{a'2-v)*(a"2-w)/{a'2-b''2)/(a-2-c-2)Y(l/2) у = ((b»2-u)*(b~2-v)*(b"2-w)/(b"2-a»2)/(b»2-c«2))'(l/2) z = ((c''2-u)*(^2-v)*(c''2-w)/(c'2-a'2)/(c^2-)''2))~(l/2)
confocalparab
x = ((a'2-u)*(si'2-v)*(a'2-w)/{V2-a'2))'(l/2) у = ((b»2-u)*(b»2-v)*(b-2-w)/(b-2-a-2) Г(1/2) z = (a"2+b"2-u-v-w)/2
conical
x = u*v*w/(a*b) у = u/b*((v"2 - h~2)*(b~2-w''2)/(a~2-V2)Y(l/2) z = u/a*((a'2 - v'2)*(a'2 - w~2)/(a-2-b»2))"(l/2)
cylindrical
x = u*cos(y) у = u*sin(y) z = w
ellcylindrical
x = a*cosh(u)*cos(v) у = a*sinh(u)*sin(v) z = w
ellipsoidal
x = u*v*w/a/b у = ((u'^-b^Mv^-b^^b^-w^Aa^-b^^l^/b z = ((u-2-a»2)*(a•2-v«2)*(a»2-w"2)/(a•2-b'2))»(l/2)/a
hypercylindrical
x= ((u"2+v"2Y(l/2)+u)'(l/2) y^u^+v^ni^-iO-O/^) z=w
invcasscylindrical
x = a*2-(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)-(l/2) +
exp(u)*cos(v)+l)'(l/2)/(exp(2*u)+2*exp(u)*cos(v)+l)'(l/2) у = a*2-(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)-(l/2) -
exp(u)*cos(v)-l)»(l/2)/(exp(2*u)+2*exp(u)*cos(v)+l)«(l/2) z = w
invellcylindrical
x = a*cosh(u)*cos(v)/(cosh(ur2-sin(v)"2) у = a*sinh(u)*sin(v)/(cosh(u)"2-sin(v)~2) z = w
invoblspheroidal
x = a*cosh(u)*sin(v)*cos(w)/(cosh(u)"2-cos(v)«2) у = a*cosh(u)*sin(v)*sin(w)/(cosh(u)'2-cos(v)"2) z = a*sinh(u)*cos(v)/(cosh(u)«2-cos(v)'2)
invprospheroidal
x = a*sinh(u)*sin(v)*cos(w)/(cosh(u)'2-sin(v)"2) у = a*sinh(u)*sin(v)*sin(w)/(cosh(u)«2-sin(v)«2) z = a*cosh(Ll)*cos(v)/(cosh(u)»2-s^n(v)•2)
logcoshcylindrical
x = !i/Pi*n(cosh(uY2-sm(vY2} у = 2*a/Pi*arctan(tanh(u)*tan(v)) z = w
maxwellcylindrical
x = a/Pi*(u+l+exp(u)*cos(v)) у = a/Pi*(v+exp(u)*sin(v)) z = w
oblatespheroidal
x = a*cosh(u)*sin(v)*cos(w) у = a*cosh(u)*sin(v)*sin(w) z = a*sinh(u)*cos(v)
paraboloidal
x = u*v*cos(w) у = u*v*sin(w) z = (u"2 - v'2)/2
paraboloidal2
x = 2*((u-a)*(a-v)*(a-w)/(a-b))-(l/2) у = 2*((u-b)*(b-v)*(b-w)/(a-b))-(l/2) z = u+v+w—a—b
paracylindrical
x = (u'2 - v'2)/2 у = u*v z = w
prolatespheroidal
x = a*sinh(u)*sin(v)*cos(w) y=a*sinh(u)*sin(v)*sin(w) z=a*cosh(u)*cos(v)
rectangular
x = и у = v • z = w
rosecylindrical
x = ((1Г2+у-2)-(1/2)+и)-(1/2)/(1Г2+у-2Г(1/2) у = ((u'2+v'2y(l/2)-uY(l/2)/(u'2+v'2V(/2) z = w
sixsphere
x= u/(u'2+v'2+w'2) у = v/(u'-2+v'2+v/''2) z = w/(u'2+v'2+w'2)
spherical
x = u*cos(v)*sin(w) у = u*sin(v)*sin(w) z = u*cos(w)
tangentcylindrical
x = u/(ir2+v"2) у = v/(u«2+v»2) z = w
tangentsphere
x = u-costwVdj^+v^) у = u*sin(w)/(ir2+v"2) z = v/(u"2+v~2)
toroidal
x = a*sinh(v)*cos(w)/d у = a*sinh(v)*sin(w)/d z = a*sin(u)/d (где d = cosh(v) - cos(u) )
Эти формулы полезно знать, поскольку в литературе встречаются несколько отличные формулы пересчета.
Вид графиков трехмерных поверхностей очень сильно различается в разных
координатных системах. По умолчанию трехмерные графики строятся в прямоугольной системе координат — rectangular.
13.4. Примеры построения трехмерных поверхностей с помощью функции plot3d
13.4.1. Простейшее построение ЗО-поверхности с разным стилем
На рис. 13.15 показано два примера простейших построений графиков трехмерной поверхности. По умолчанию строится каркасная поверхность с функциональной окраской тонких линий каркаса и удалением невидимых линий. Чтобы график выглядел более четким, построение в первом примере задано линиями черного цвета с помощью параметра color-black.
Рис. 13.15. Примеры простейшего построения трехмерных поверхностей.
Во втором примере та же поверхность построена с параметром style=patch, что приводит к появлению ее функциональной окраски (увы, на рисунках в книге воспринимаемой как окраска оттенками серого цвета). Функциональная окраска делает рисунки более информативными.
Помимо значения path, можно задавать ряд других стилей для построения трехмерных поверхностей: point — точками, contour — контурными линиями, line — линиями, hidden — линиями каркаса с удалением невидимых линий, wireframe — линиями каркаса со всеми видимыми линиями, patchnogrid — с раскраской, но без линий каркаса, patchcontour — раскраска с линиями равного уровня.
Цвет трехмерного графика может задаваться (как и у двумерного) опцией со1ог=с, где с — цвет (оттенки цвета указывались выше). Возможно еще два алгоритма задания цвета:
HUE — алгоритм с заданием цвета в виде color=f(x,y);
RGB — алгоритм с заданием цвета в виде color=[exprr,exprg,exprb], где выражения exprr, exprg и exprb — выражения, задающие относительную значимость (от О до 1) основных цветов (красного — red, зеленого — green и синего — blue).
Удачный выбор углов обзора фигуры и применение функциональной окраски позволяют придать построениям трехмерных фигур весьма эффектный и реалистический вид.
13.4.2. Построение фигур в различных системах координат
Как отмечалось, вид графика трехмерной поверхности существенно зависит от выбора координатной системы. Рис. 13.16 показывает пример построения нелинейного конуса в цилиндрической системе координат. Для задания такой системы координат используется параметр coords=cylindrical.
Рис. 13.16. Нелинейная цилиндрическая поверхность.
При построении этой фигуры также использована цветная функциональная окраска. Кроме того, этот пример иллюстрирует вывод над рисунком титульной надписи.
Приведем еще один пример построения трехмерной поверхности — на этот раз в сферической системе координат (рис. 13.17). Здесь функция задана вообще элементарно просто — в виде числа 1. Но поскольку выбрана сферическая система координат, то строится поверхность шара единичного радиуса.
При этом построении также задана функциональная окраска поверхности и вывод титульной надписи.
О том, насколько необычным может быть график той или иной функции в различных системах координат свидетельствует рис. 13.18. На нем показан график параметрически заданной функции от одной координаты t — sin(t"3), построенный в сферической системе координат.
Кстати, рис. 13.18 иллюстрирует возможность одновременного наблюдения более чем одного окна — в данном случае двух окон. В одном окне задано построение графика, а в другом — построен сам график. При построении графика в отдельном
Рис. 13.17. Построение шарообразной поверхности в сферической системе координат.
Рис. 13.18. График еще одной поверхности в сферической системе координат.
окне появляется панель форматирования графика. С помощью ее довольно наглядных кнопок-пиктограмм можно легко скорректировать вспомогательные параметры графика (окраску, наличие линий каркаса, ориентацию и др.).
13.4.3. Построение графиков параметрически заданных поверхностей
На рис. 13.19 показано построение поверхности при полном ее параметрическом задании. В этом случае поверхность задается тремя формулами, содержащимися в списке.
Рис. 3.19. График ЗО-поверхности при полном параметрическом ее задании.
В данном случае функциональная окраска задана из меню, поэтому в состав функции соответствующий параметр не введен.
13.4.4. ЗО-график как графический объект
Принадлежность функции plot и plot3D к функциям (в ряде книг их именуют операторами, командами или процедурами) наглядно выявляется при создании графических объектов.
Графический объект — это в сущности обычная переменная, которой присваивается значение графической функции. После этого такая переменная, будучи вызванной, вызывает построение соответствующего графика. Пример этого дан на рис. 13.20.
В данном случае строится кольцо Мебиуса, свойства которого (например, плавный переход с одной стороны ленты на другую) уже много веков будоражат воображение людей.
13.4.5. Задание 30-графики в виде процедуры
Язык программирования Maple V допускает применение в процедурах любых внутренних функций, в том числе графических. Пример такого применения дает рис. 13.21.
Рис. 13.20. Пример задания и вывода трехмерного графического объекта
Рис. 13.21. Пример создания и применения процедуры ЗО-графики.
Этот пример показывает еще один способ задания и построения кольца Мебиуса. Практически любые графические построения можно оформлять в виде процедуры и использовать такие процедуры в своих документах. Подробно создание графических процедур описано в книге [38], поставляемой в составе коммерческой реализации системы.
13.4.6. Построение ряда трехмерных фигур
Функция plot3d позволяет строить одновременно несколько фигур, пересекающихся в пространстве. При этом она обладает уникальной возможностью — автоматически вычисляет точки пересечения фигур и показывает только видимые части соответствующих фигур. Это создает графики фигур, выглядящие вполне естественно.
Для построения таких графиков достаточно вместо одной функции указать ряд функций. Пример такого построения для двух функций показан на рис. 13.22.
Рис. 13.22. Пример построения двух SD-фигур, пересекающихся в пространстве.
Фигура на рис. 13.22 показана после ее коррекции и функциональной окраски в «ручном» режиме — с применением инструментальной панели окна графики.
13.5. Графические структуры двумерной и трехмерной графики
13.5.1. Понятие о графических структурах
Функции PLOT и PLOT3D, с именами, набранными большими буквами, позволяют создавать графические структуры, содержащие ряд графических объектов si, s2, s3 и т.д. Каждый объект может представлять собой точку или фигуру, полигон, надпись и т.д., позиционированную с высокой точностью в заданной системе координат. Координатные оси также относятся к графическим объектам. Важно отметить, что функции PLOT и PLOT3D одновременно являются данными, описывающими графики. Их можно записывать в виде файлов и (после считывания файлов) представлять в виде графиков. Особые свойства этих функций подчеркиваются записью их прописными буквами.
13.5.2. Графические структуры двумерной графики
Графическая структура двумерной графики задается в виде:
PLOT(sl, s2, s3,...,o);
где si, s2, s3 .... — графические объекты (или элементарные структуры-примитивы), о — общие для структуры опции).
Основными объектами являются:
POINTS([xl,yl],[x2,y2),...[xn,ynj) — построение точек, заданных их координатами;
CURVES([[xll,yll],...[xln,yln]],[[x21,y21],...[x2n,y2n]],...[[xml,yml]„.. [xmn,yrnn]]) — построение кривых по точкам;
POLYGONS([[xll,yll¦,...[xln,yln]],[[x21,y2H,...[x2n,y2n]],...[[xml,yml],... [xmn.ymn]]) — построение замкнутой области — полигона (последняя точка должна совпадать с первой);
ТЕХТ([х, у], 'string', horizontal, vertical) — вывод текстовой надписи 'string', позиционированной координатами [х,у] с горизонтальной или вертикальной ориентацией. Опция horizontal может иметь значения ALIGNLEFT или ALIGNRIGHT, указывающие, в какую сторону (влево или вправо) идет надпись. Аналогично опция vertical может иметь значения ALIGNABOVE или ALIGNBELOW, указывающие, в каком направлении (вверх или вниз) идет надпись.
При задании графических объектов (структур) si, s2, s3 и т.д. можно использовать описанные выше опции и параметры, например, для задания стиля STYLE-построения (POINT, LINE, PATCH, PATCHNOGRID), толщины линий THICKNESS