Пакет Plots
содержит функцию coordplots предназначенную для
построения координатных плоскостей различных
систем координат в пространстве. Полное
количество систем координат - тридцать, среди них
имеются как часто используемые - прямоугольная,
сферическая, цилиндрическая, тороидальная,- так и
экзотические, - шестисферная (sixspherical),
конфокальная параболическая ( сonfocalparab)
и другие. Перечислим английские наименования
всех систем координат:
bipolarcylindrical, bispherical,
cardiodal, cardiodcylindrical, casscylindrical, confocalellip, confocalparab, conical, cylindrical, ellcylindrical, ellipsoidal, hypercylindrical, invcasscylindrical, invellcylindrical, invoblspheroidal, invprospheroidal,
logcoshcylindrical, logcylindrical,
maxwellcylindrical, oblatespheroidal,
paraboloidal, paraboloidal2, paracylindrical, prolatespheroidal,
rosecylindrical, sixsphere, spherical, tangentcylindrical, tangentsphere, and toroidal.
Приведем примеры (рис. 46-48):
> with(plots):
Digits := 10:
coordplot3d(spherical);
Рис. 46
> infolevel[coordplot3d]:=2:
coordplot3d(rosecylindrical);
Рис. 47
> coordplot3d(sixsphere);
Рис. 48
Команда cylinderplot пакета позволяет
строить графики в цилиндрических координатах
(рис. 49)
> f := (5*cos(y)^2 -1)/3;
plots[cylinderplot](f, x=0..2*Pi,y=-Pi..Pi);
Рис. 49
Команда complexplot3d позволяет строить
графики комплексных функций в трехмерном
пространстве, причем возможны два варианта
записи, в виде
> complexplot3d( f(z) , z = z1 .. z2
);
где f - функция комплексного аргумента z,
в этом случае координата z поверхности
определяется абсолютной величиной функции, в то
время как цвет поверхности определяется
аргументом.
В записи
> complexplot3d( [f1(x,y), f2(x,y)],
x = x1..x2, y = y1..y2);
координата z определяется функцией f1, а
цвет функцией f2.
Приведем примеры (рис. 50, рис. 51).
> complexplot3d( sec(z) , z = -3 -
3*I .. 3 + 3*I );
Рис. 50
график выражения из R2 в R2:
> with(plots):complexplot3d( [x^2 -
y^2, 2*x*y], x = -2..2, y= -2..2);
Рис. 51
При помощи команды fieldplot3d пакета
возможно построение трехмерных векторных полей
(рис. 52).
> fieldplot3d([2*z*y,2*x*z,2*x*y],x=-1..1,y=-1..1,z=0-1..1,grid=[5,5,5]);
Команда gradplot3d предназначена для
построения поля градиентов функции (рис. 53).
> gradplot3d(
(x^2+y^2+z^2+1)^(1/2),x=-2..2,y=-2..2,z=-2..2);
При помощи команды implicitplot3d строятся
поверхности, заданные неявно (рис. 54).
> implicitplot3d( x^3 + y^3 + z^3 + 1
= (x + y + z + 1)^3,x=-2..2,y=-2..2,
z=-2..2,grid=[13,13,13]);
Команда listplot3d предназначена для
построения поверхности по точкам, заданным
списком списков (матрицей) (рис. 55)..
> listplot3d([seq([seq(sin((i-15)*(j-10)/Pi/20),i=1..30)],j=1..20)]);
Рис. 55
Команда пакета matrixplot строит
поверхность, z-координата которой задается
матрицей (рис. 56).
> with(linalg):
A:= hilbert(8): B:= toeplitz([1,2,3,4,-4,-3,-2,-1]):
matrixplot(A+B,heights=histogram,axes=frame,gap=0.25,style=patch);
Warning, new definition for norm
Warning, new definition for trace
Рис. 56
Команда odeplot , входящая в пакет
позволяет строить графики решения
дифференциальных уравнений и систем. Рассмотрим
систему.
> sys :=
diff(y(x),x)=z(x),diff(z(x),x)=y(x): fcns := {y(x), z(x)}:
p:= dsolve({sys,y(0)=0,z(0)=1},fcns,type=numeric):
Трехмерная кривая решения (рис. 57).
> odeplot(p,
[x,y(x),z(x)],-4..4,numpoints=25, color=orange);
Рис. 57
Команда polygonplot3d используется для
создания трехмерного графика из
многоугольников. Многоугольник задается списком
точек, определяющих вершины многоугольника.
Приведем пример (рис. 58).
> list_polys :=
[seq([seq([T/10,S/20,sin(T*S/20)],T=0..20)],S=0..10)]:
polygonplot3d(list_polys);
Рис. 58
Команда spacecurve предназначена для
построения параметрически заданных кривых в
пространстве (рис. 59)
> knot:= [-10*cos(t) - 2*cos(5*t) +
15*sin(2*t),-15*cos(2*t) + 10*sin(t) - 2*sin(5*t), 10*cos(3*t)];
spacecurve(knot,t= 0..2*Pi);
Рис. 59
При помощи команды surfdata строится
поверхность по заданным точкам (рис. 60).
> with(plots):
data := [seq([ seq([i,j,evalf(cos((i+j)/5))], i=-5..5)], j=-5..5)]:
F := (x,y) -> x^2 + y^2:
surfdata( data, axes=frame, labels=[x,y,z],color=F );
Рис. 60
Команда textplot3d позволяет делать
надписи на трехмерном графике (рис. 61)
> textplot3d([[1,2,3,`The first
point`],[2,2,3,`Second point`]],color=green);
Рис. 61
И, наконец, командой tubeplot можно
создавать трубчатые графические объекты (рис. 62)
> F := (x,y) ->sin(x):
tubeplot({[cos(t),sin(t),0],[0,sin(t)-1,cos(t)]},t=0..2*Pi,radius=t^(1/2)/8,style=patch);
Рис. 62
|