Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
maple лаб 08-1 двумерная графика в MAPLE.doc
Скачиваний:
4
Добавлен:
12.08.2019
Размер:
347.65 Кб
Скачать

2. Двумерные команды пакета plots

5. На плоскости кроме прямоугольной декартовой системы координат используются и другие. Одной из наиболее часто применяемой является полярная система координат, в которой положение точки задается также двумя величинами. Они представляют собой длину r радиус-вектора, проведенного из начала координат в заданную точку, и угол наклона  этого вектора относительно положительного направления горизонтальной оси координат. Многие "замечательные" плоские кривые легче и проще задавать именно в полярной системе координат. Например, окружность радиуса a с центром в начале координат в полярной системе координат задается простым уравнением r=a, тогда как в декартовой системе координат эта же окружность задается уравнением в неявном виде .

Для отображения графика функции, заданной в полярной системе координат, в пакете plots существует функция polarplot(). Ее синтаксис похож на синтаксис команды plot() за одним исключением – не задается третий параметр, ограничивающий диапазон изменения значений, в данном случае длины радиус-вектора:

polarplot(r, phi=диапазон, опции);

Параметр r – это выражение или функция, зависящие от независимой переменной phi, интерпретируемой как угол поворота радиус-вектора относительно горизонтальной оси. Диапазон изменения независимой переменной может отсутствовать, тогда используется диапазон изменения по умолчанию -Pi..Pi. остальные параметры представляют собой такие же опции, что и в функции plot(). Использование команды построения окружности в полярной системе координат демонстрируется в примере 5.

Пример 5. График функции в полярной системе координат

> polarplot(5, phi=0..2*Pi, color=black, thickness=2);

В некоторых версиях MAPLE вместо обещанной окружности мы увидим эллипс. Дело в том, что по умолчанию во всех графических командах используется значение UNCONSTRAINED параметра scaling. А это означает, что график растягивается по осям таким образом, чтобы полностью заполнить отводимое под него пространство на рабочем листе, что приводит к несоответствию единиц измерения по горизонтальной и вертикальной осям. Подобное явление характерно для вывода всех графических команд Maple. Исправить подобный дефект можно с помощью команд интерфейса пользователя или при отображении кривой в соответствующей команде, задав опцию scaling=CONSTRAINED:

> polarplot(5, phi=0..2*Pi, color=black,t hickness=2, scaling=constrained);

Команда polarplot() также позволяет отображать графики параметрически заданных кривых. Для этого подобную кривую следует задать в форме трехэлементного списка, в котором первые два элемента представляют выражение через параметр длины радиуса-вектора и его угла поворота, а третий элемент задает диапазон изменения параметра:

> polarplot([r,sin(2*r),r=0..7],

color=black,

thickness=2,

scaling=constrained);

Замечание 1.

График этой же функции можно построить и командой plot(), но в ней следует задать опцию coords=polar.

Замечание 2.

Для отображения командой polarplot() на одном графике нескольких кривых, их следует задавать, как и в случае с командой plot(), в виде списка.

ЗАДАНИЕ 6. Нарисуйте лемнискату Бернулли: и 5 роз при значениях п от 2 до 6. Две любые кривые изобразите на одном графике разным цветом.

6. В Maple командой coordplot() можно начертить "линии уровня" плоских систем координат, поддерживаемых командой plot() через опцию coords. В качестве параметра этой функции передается название системы координат (см. опцию coords в табл.1):

> coordplot(polar,color=[red,green],scaling=CONSTRAINED,

title="Polar system of coordinates");

> coordplot(bipolar,color=[green,red],scaling=CONSTRAINED,

title="Bipolar system of coordinates");

Замечание. Только для полярной системы координат существует специальная команда построения графика функции. Для отображения графиков функций в других допустимых системах координат следует использовать опцию coords команды plot().

7. Бывает так, что искомая функция, график которой надо отобразить, представляется только в неявном виде f(x,y)=0 и никакими ухищрениями ее нельзя представить в явной форме ни в одной из известных систем координат. В таком случае следует воспользоваться командой implicitplot(), которая специально разработана для отображения неявных функций:

implicitplot(expr, x=a..b, y=c..d, опции);

implicitplot(f, a..b, c..d, опции);

Здесь в первой форме вызова команды параметр expr представляет уравнение, зависящее от двух переменных x и y, а во второй форме f представляет уравнение, и в левую, и в правую части которого входят только процедуры-функции и операторы от двух переменных. Дополнительно ко всем известным опциям команды plot() можно задать опцию grid=[m,n], которая определяет сетку из mn точек, на которой вычерчивается кривая. При увеличении количества точек в сетке кривая отображается более гладкой без угловых точек. По умолчанию используется сетка 2525 точек. Опцией coords можно задавать график в разных системах координат, по умолчанию используется декартовая прямоугольная система координат.

Пример 6. График неявно заданной функции

> implicitplot(x^2+y^3-8=0, x=-10..10, y=-8..8,

color=black, grid=[60,60], thickness=2);

Замечание. Увеличение числа точек в сетке, на которой рассчитывается неявно заданная кривая, приводит к существенному увеличению времени расчета ее графика.

ЗАДАНИЕ 7. Нарисовать гиперболу с выводом заданных а и b. На том же графике пунктиром изобразить асимптоты .

8. Часто в технике при отображении зависимости двух параметров какой-либо системы используются логарифмические оси координат, т.е. по одной или обеим осям откладываются десятичные логарифмы соответствующих величин. В пакете plots содержатся три команды, позволяющие работать с подобным представлением функций: loglogplot() осуществляет логарифмическое преобразование обеих координат, semilogplot() только горизонтальной оси, а logplot() только вертикальной оси координат.

Пример 7. Отображение функции 10x в логарифмической шкале

9. Очень полезная команда inequal() отображает на плоскости решение смешанной системы линейных неравенств и уравнений двух независимых переменных. Ее синтаксис несколько отличается от синтаксиса большинства команд пакета plots. При обращении к ней для каждой из перечисленных ниже областей, на которые смешанная система делит двумерную плоскость, возможно задание собственных значений опций после указания опции, идентифицирующей соответствующую область:

  • область, удовлетворяющая системе неравенств (optionsfeasible=(опции)) (feasible – выполнимый, подходящий);

  • область, не удовлетворяющая хотя бы одному неравенству из заданной смешанной системы (optionsexcluded=(опции)) (excluded – исключённый);

  • область границы строгих неравенств (optionsopen=(опции)) (open – открытая (область));

  • область границы нестрогих неравенств и равенств (optionsclosed=(опции)) (closed – замкнутая (область)).

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

Пример 8. Отображение решения смешанной системы неравенств и равенств

> inequal( { x+y>0, x-y<=1, y<2}, x=-4..4, y=-4..4,

optionsfeasible=(color=red),

optionsopen=(color=black,thickness=3),

optionsclosed=(color=green, thickness=6),

optionsexcluded=(color=magenta) );

Замечание. На рисунке область более темного цвета соответствует области решения неравенств, более светлого – области, не удовлетворяющей системе неравенств. Черная линия представляет область границы строгих неравенств, а толстая светлая линия – область границы нестрогих неравенств и равенств, входящих в смешанную систему.

Замечание. Границы строгих неравенств лучше отмечать пунктирными линиями. Для этого нужно задать стиль соответствующей линии опцией linestyle=3, а толщину этой линии сделать равной 1 или 2, например, thickness=1.

Пример 8а.

> with(plots):

> inequal( { y-x<=0, 2*y-x>0, y>=2,y<3}, x=0..8, y=1..4, optionsfeasible=(color=red),

optionsopen=(color=blue, thickness=2,linestyle=3),

optionsclosed=(color=green, thickness=3),

optionsexcluded=(color=yellow));

ЗАДАНИЕ 8. Нарисуйте область, ограниченную прямыми: у=3х, у=х/2, у=1, у=-х+8. Правые границы сделайте пунктирными. Для оптимального выбора масштаба сначала нарисуйте все линии на одном графике с помощью команды plot.

К сожалению, команда inequal() действует только для линий, заданных линейными уравнениями. Для нелинейных уравнений области можно получить, нарисовав все линии на одном графике с помощью команды plot.

ЗАДАНИЕ 9. Получите область, ограниченную прямыми (выберите свой вариант). Если прямые заданы равенствами, задайте область с помощью соответствующих неравенств.

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

10. Команда polygonplot() строит на плоскости один или несколько многоугольников, заданных своими вершинами. Каждый многоугольник задается в виде списка координат его вершин, представленных в форме двухэлементных списков. В случае отображения нескольких многоугольников они задаются либо списком, либо множеством.

Пример 9. Отображение многоугольников

> one_poly := [[0.5,0],[0.5,1],[1,1] ,[1,0]];

> ngon := n -> [seq([cos(2*Pi*i/n), sin(2*Pi*i/n) ], i = 1..n)];

> polygonplot([one_poly, ngon(10)],color=grey, thickness=3,

scaling=CONSTRAINED);

10. Линии уровня. Две двумерные графические команды отображают на плоскости одинаковые значения функции двух независимых переменных: 1) densityplot() – в виде функции плотности линий уровня . Более темные области соответствуют большим значениям функции и наоборот – более светлые представляют меньшие значения функции, density означает плотность. 2) Функция contourplot() отображает одинаковые значения функции двух независимых переменных в виде линий (контуров) уровня. При отображении функции плотности линий уровня по умолчанию отображаются линии сетки, на которой она рассчитывается. Установкой значений опции style, равной patchnogrid, можно отменить отображение линий сетки (no grid – нет сетки). Команда contourplot() по умолчанию отображает восемь линий уровня. Изменить это значение можно опцией contours, значением которой является количество линий уровня или список значений линий уровней. Опцией coloring задается цвет линии уровня с наименьшим значением и цвет линии уровня с наибольшим значением. Все остальные отображаются цветом соответствующего оттенка между указанными цветами в двухэлементном списке. Если значение опции filled установлено равным true, то отображается функция плотности линий уровня с указанным цветовым переходом и линии уровня черным цветом.

Пример 10. Функция плотности и линии уровня поверхностей

> densityplot(sin(x)*sin(y), x=-3..3, y=-3..3,

grid=[40,40], scaling=CONSTRAINED, style=patchnogrid);

> contourplot(sin(x)*sin(y), x=-3..3, y=-3..3,

grid=[40,40], scaling=CONSTRAINED, contours=16,

coloring=[magenta, blue], thickness=2);

> contourplot(sin(x)*sin(y), x=-3..3, y=-3..3,

grid=[40,40], scaling=CONSTRAINED, contours=16,

coloring=[magenta, blue], filled=true, thickness=2);

11. Векторные поля. Команды gradplot() и fieldplot() похожи в том отношении, что обе они отображают векторные поля на плоскости: первая – поле градиентов заданной функции двух переменных, а вторая – простое векторное поле, определяемое координатами векторов в заданных точках поля. Обе эти команды для задания размеров и вида отображаемых векторов используют опцию arrows (стрелки), которая может принимать следующие значения: THIN (умалчиваемое значение –тонкие), LINE, SLIM или THICK (толстые). Опцией color задается функция двух переменных, которая используется для определения цвета вектора в точке. Векторное поле для команды fieldplot() задается в виде двухэлементного списка координат векторов, представленных функциями двух независимых переменных.

ЗАДАНИЕ 10. Нарисуйте линии уровня эллиптического параболоида и гиперболического параболоида .

Пример 11. Отображение поля градиентов функции и векторного поля на плоскости

> gradplot(sin(x)*sin(y), x=-3..3, y=-3..3,

grid=[15,15], arrows=THICK,

color=sin(x)*sin(y), scaling=CONSTRAINED);

> fieldplot([y*cos(x*y),x*cos(x*y)], x=-1..1, y=-1..1, arrows=SLIM);

ЗАДАНИЕ 11. Отобразить то же поле другими типами стрелок.

12. Отображение текста. Align – выравнивание. Higher – выше, righter – правее, lower – ниже, lefter – левее.

Пример 12. Отображение текста

> t1:=textplot([1,2," higher & righter"], align={ABOVE,RIGHT}, color=magenta):

> t2:=textplot([1,2," higher & lefter "], align={ABOVE,LEFT}, color=blue):

> t3:=textplot([1,2," lower & lefter "], align={BELOW,LEFT}, color=red):

> t4:=textplot([1,2," lower & righter"], align={BELOW,RIGHT}, color=green):

> f:=plot([[1,2]],style=POINT,color=black,symbolsize=10):

> display([t1, t2, t3, t4, f]);

Для совмещения на одном рисунке примера 13 выводов нескольких графических команд использована команда display(). Переменным t1, t2, t3, t4, f присваиваются значения графиков.