3d-поверхности и контурные графики
Для визуализации двумерных данных в виде функции f(x,y) в Maple есть две возможности:
(1) нарисовать значения функции как высоту поверхности над плоскостью (xy) или
(2) нарисовать контуры постоянного значения f(x,y) в плоскости (xy).
Что лучше – решается проверкой и на ваш вкус.
Примеры для обоих вариантов.
Рассмотрим функцию типа «горный рельеф»:
Трехмерный график создается командой plot3d:
- restart;
- f:=exp(-abs(x-sin(y)))*(1+.2*cos(x/2))*(1 + .4/(.3+y^2));
- plot3d(f,x=-6..6,y=-6..6);
Выглядит интересно, но чтобы увидеть подробности, нужны разные углы обзора. Для этого есть опции команды (запрос ?plot3d[option]), или просто щелкните на фигуре и тащите курсор, удерживая левую кнопку мыши, пока не повернете куда надо. Если зайти в меню Options на панели и заменить отображение с inline на window, получите рисунок с набором инструментов, которые могут изменить множество элементов.
Вот улучшенный график с опцией внутри команды:
- plot3d(f,x=-6..6,y=-6..6,grid=[60,60],labels=["x","y","f"],
orientation=[45,30], axes=boxed,shading=xy,view=0..3);
Сетка контролируется опцией grid=[m,n], надписи – опцией labels, а угол обзора – orientation.
Предупреждение: разработчики Maple используют как угол сферических координат вместе с осью z и азимутальным углом θ (ху-поворот).
В физике углы обозначаются в точности наоборот. Поэтому применяют опцию ориентации orientation = [,θ], что прямо противоположно тому, что написано в Maple help. Вдобавок, угол
указывает направление, вдоль которого смотрит наблюдатель, а не его угловое положение. Это необычно, и надо поэкспериментировать, чтобы привыкнуть и получать из опций именно то, что хочется.
Вертикальный размер контролируется опцией view=zmin..zmax.
Тени задаются shading=z, shading=xy, shading=xyz.
Другие параметры можно посмотреть по запросу ?plot3d.
Попробуйте и посмотрите, что делают опции на панели управления, которые появляются после щелчка по графику.
Посмотрите контурный рисунок этих же гор или топографическую карту (не забывайте, что для применения команды нужно сказать: with(plots)):
- restart;
- with(plots):
- f:=exp(-abs(x-sin(y)))*(1+.2*cos(x/2))*(1 + .4/(.3+y^2));
- contourplot(f,x=-6..6,y=-6..6,contours=40,grid=[30,30],coloring=[green,blue]);
Учтите, что опция coloring=[green,blue] рисует малые значения функции зеленым, большие – синим, а остальное – переходными цветами. Для подробной справки посмотрие запрос ?plot[color]):
- ?plot[color]