1、maple图形制作第五章 Maple图形绘制 图形无疑是数学中最令人着迷的部分, 一些枯燥的公式可以从图形看出其美. 历史上有许多学者利用函数图形解决了学科中的许多难题. 客观地说, Maple不是一种可视化的语言它不会产生出版品质的图形. 然而, 它的图形功能非常强大, 足以提供更多的关于函数的信息. 当然, 如果需要, 它的图形作适当改进即可满足出版要求. 限于篇幅, 本章所有图形未作打印, 读者只需在计算机上按照书中语句操作即可观其效果, 更多图形功能可通过Maple帮助获得. 1 二维图形制作Maple所提供的二维绘图指令plot可以绘制二维的函数图、参数图、极坐标图、等高线图、不等式
2、图,等等. 这些绘图指令有些已经内嵌在其核心程序里, Maple启动时即被装入,直接调用函数命令即可,有些则需要使用with(plots)调用plots函数库才能完成. 1.1 基本二维绘图指令plot (f(x), x=xmin . xmax); plot (f(x), x=xmin . xmax, y=ymin . ymax); plot (f1(x), f2(x), , x=xmin . xmax); plot (f(x), x=xmin . xmax, option); 其中,xmin.xmax为x的变化范围,ymin.ymax为y(即f(x)的变化范围. option选项参数主要有:
3、axes:设定坐标轴的显示方式, 一般有FRAME(坐标轴在图形的左边与下面)、BOXED(坐标轴围绕图形)、NORMAL(一般方式显示)或NONE(无)color:设定图形所要涂的颜色(可选用也可自设)coords:指定绘图时所用的坐标系(笛卡尔坐标系(cartesian,默认)、极坐标系(polar)、双极坐标系(bipolar)、logarthmic(对数坐标系)等discont:设定函数在不是否用线段连接起来(discont=true则不连接, 默认是discont=false)labels:设定坐标轴的名称(labels=x, y, x与y分别为x与y坐标轴的名称)linestyle
4、:设定所绘线条的线型(linestyle=n, n为1是实线, 2为点, 3为虚线, 4为虚线与点交错)numpoints:设定产生一个函数图形所需的最少样点scaling:设置x与y轴的比例(unconstrained非约束,constrained约束,比例为1:1)style:设定图形的显示样式(LINE(线形)、POINT(点)、PATCH(显示多边形与边线)、PATCHNOGRID(只显示色彩而无边界)symbol:设定点的格式(主要有BOX(方块)、CROSS(十字)、CIRCLE(圆形)、POINT(点)、DIAMOND(菱形)等几项)thickness:设定线条的粗细(0、1、2
5、、3几种参数, 数值越大线条越粗)tickmarks:设定坐标轴刻度的数目(设定tickmarks=m, n, 则x轴刻度为m, y轴为n)title:定义图形的标题(要用 把标题引起来)view:设定屏幕上图形显示的最大坐标和最小坐标,缺省是整个曲线 下面通过一些实例学习: plot(sin(1/x),x=-0.1.0.1,title=y=sin(1/x),axes=normal); plot(1/(2*sin(x),x=-10.10,y=-30.30);试比较下述三图的效果: plot(tan(x),x=-2*Pi.2*Pi); plot(tan(x),x=-2*Pi.2*Pi, y=-5
6、.5); plot(tan(x),x=-2*Pi.2*Pi, y=-5.5,discont=true);(此处命令discont=true的作用是去除垂直渐近线) plot(sin(cos(6*x)/x, x=0.15*Pi, y=-0.6.0.5, axes=NONE); plot(Zeta(x),x=-3.3,y=-3.3,discont=true);除了绘制基本的函数图之外, plot还可绘制自定义函数的图形, 也可以同时绘制多个函数图. f:=x-sin(x)+cos(x)2; plot(f(x),x=0.16); plot(sin(x),sin(x2),sin(x3/10),x=-2
7、*Pi.2*Pi);利用seq指令产生一个由函数所组成的序列, 并将此函数的序列赋给变量, 然后将函数序列绘于同一张图上. f:=x-sin(x)+cos(x);fs:=seq(f(x)(n-1)+f(x)n,n=1.4):plot(fs,x=0.20); f:=x-x*ln(x2):g:=x-ln(x):plot(f,g,0.2,-1.5.1.5);也可以直接把seq指令放在plot里来绘出一系列的函数图. plot(seq(f(x)(2/n),n=1.3),x=0.10);1.2 二维参数绘图更多情况下,我们无法把隐函数化成显函数的形式, 因而plot指令无法在二维的平面里直接绘图. 但是
8、, 在某些情况下, 我们可以把平面上的曲线f(x, y)化成 x=x(t), y=y(t)的形式, 其中t为参数(parameter). 据此即可绘图, 其命令格式如下:plot (x(t), y(t), t=tmin . tmax);plot (x(t), y(t), t=tmin . tmax, xmin . xmax, y=ymin . ymax);plot (x(t), y(t), t=tmin . tmax, scaling=CONSTRAINED); plot (x1(t), y1(t), t1=t1min . t1max, x2(t), y2(t), t2=t2min . t2m
9、ax,); plot(t*exp(t),t,t=-4.1,x=-0.5.1.5,y=-4.1); plot(sin(t),cos(t),t=0.2*Pi); plot(sin(t),cos(t),t=0.2*Pi,scaling=CONSTRAINED);上述两上语句都是绘制圆的命令, 但由于后者指定的x、y坐标的比例为1:1, 所以才得到了一个真正的圆, 而前者由于比例不同, 则像个椭圆. 下面则是内摆线的图形: x:=(a,b)-(a-b)*cos(t)+b*cos(a-b)*t/b); y:=(a,b)-(a-b)*sin(t)-b*sin(a-b)*t/b); 当a=1, b=0.58
10、时,(x(a,b), y(a,b)图形绘制命令为: plot (x(1,0.58), y(1,0.58), t=0.60*Pi, scaling=CONSTRAINED); 再作a, b取其它值时的情形: plot(x(2,1.2),y(2,1.2),t=0.6*Pi,scaling=CONSTRAINED); plot(x(2,8),y(2,8),t=0.16*Pi,scaling=CONSTRAINED); plot(x(2,12),y(2,12),t=0.16*Pi,scaling=CONSTRAINED);下面再看同时绘制多个图形的情形. plot(cos(3*t),sin(2*t),
11、t=0.2*Pi,sin(t),cos(3*t),t=0.2*Pi);1.3 数据点绘图如果所绘的图形是间断性的数据, 而不是一个连续的函数, 那么我们可以把数据点绘在x-y坐标系中, 这就是所谓的数据点绘图. 其命令格式如下:plot(x1, y1, x2, y2, , style=point);plot(x1, y1, x2, y2, ); data1:=seq(2*n,n3+1,n=1.10):plot(data1,style=point); data2:=seq(n,1+(-1)n/n,n=1.15):plot(data2,style=point,view=0.20,0.2); dat
12、a3:=seq(t*cos(t/3),t*sin(t/3),t=1.30):plot(data3,style=point);1.4 其它坐标系作图由于所研究的问题的特殊性,常常需要选用不同的坐标系, 在Maple中除笛卡尔坐标系 (cartesian, 也称平面直角坐标系, 默认)外,还提供了polar(极坐标系)、elliptic(椭圆坐标系)、bipolar(双极坐标系)、maxwell(麦克斯韦坐标系)、logarithmic(双数坐标系)等14种二维坐标系,其中最常用的是极坐标系。设定坐标系的命令是coords. plot(ln(x+1)2,x=0.8*Pi, coords=polar
13、, scaling=CONSTRAINED,thickness=2); plot(sin(6*x),x=0.68*Pi, coords=polar, scaling=CONSTRAINED, tickmarks=3,3); plot(sin(20*x),cos(sin(2*x),x=0.2*Pi,coords=elliptic, scaling=CONSTRAINED, color=red,blue); plot(exp(sin(68*t)+cos(68*t), t=0.2*Pi, coords=polar, scaling=CONSTRAINED); plot(seq(sin(t)+n*co
14、s(t), n=-5.5), t=0.Pi, coords=polar, scaling=CONSTRAINED);试比较y=sin(x)在不同坐标系中的图形显示: plot(sin(x),x=0.2*Pi,coords=polar,scaling=CONSTRAINED); plot(sin(x),x=0.2*Pi,coords=bipolar,scaling=CONSTRAINED); plot(sin(x),x=0.2*Pi,coords=elliptic,scaling=CONSTRAINED); plot(sin(x),x=0.2*Pi,coords=maxwell,scaling=
15、CONSTRAINED); restart: with(plots,polarplot): r:=(n,theta)-cos(5*theta)+n*cos(theta); plot(seq(r(n,t)*cos(t),r(n,t)*sin(t),t=0.Pi,n=-5.5); polarplot(exp(cos(theta)-2*cos(4*theta)+sin(theta/12)5),theta=0.24*Pi);2 三维绘图2.1 基本三维绘图指令三维空间的绘图比二维空间更有变化性和趣味性, 其命令函数为plot3d, 可直接调用. 命令格式如下:plot3d(f(x,y), x=xmin
16、 . xmax, y=ymin . ymax);plot3d(f(x,y), g(x,y), , x=xmin . xmax, y=ymin . ymax);plot3d(f(x,y), x=xmin . xmax, y=ymin . ymax, options);其中,xmin.xmax为x的变化范围,ymin.ymax为y(即f(x)的变化范围. Option选项参数与二维时的情形相似,这里只列示新增指令的意义:cotours:设定等高线的数目或者等高线的值grid:设定组成曲面的样点数或方形网格的数量gridstyle:设定网格的形状(rectangular矩形,triangular三角
17、形)orientation:设定观看图形的视角(但设定视角的最佳方式是用鼠标拖动图形)projection:设定投影的模式shading:设定曲面着色的方式与二维情形相同,在Maple中三维绘图坐标系的选定使用命令coords,缺省坐标系为笛卡尔坐标系(cartesian),此外还有:bipolarcylindrical(双极坐标), bispherical(双球面坐标), cardioidal(心脏线坐标), cardioidcylindrical(心形柱坐标), casscylindrical( ), confocalellip(共焦椭球坐标), confocalparab(共焦抛物线坐标
18、), conical(锥形坐标), cylindrical(柱坐标), ellcylindrical(椭柱坐标), ellipsoidal(椭球坐标), hypercylindrical (超圆柱坐标), invcasscylindrical, invellcylindrical(逆椭球坐标), invoblspheroidal( ), invprospheroidal( ), logcoshcylindrical(双数双曲余弦柱坐标), logcylindrical(对数柱坐标), maxwellcylindrical(麦克斯韦柱坐标), oblatespheroidal( ), parab
19、oloidal(抛物面坐标), paracylindrical(参数柱坐标), prolatespheroidal(扁类球坐标), rosecylindrical(玫瑰形柱坐标), sixsphere(六球坐标), spherical(球坐标), tangentcylindrical(正切柱坐标), tangentsphere(正切球坐标)和toroidal(圆环面坐标). plot3d(x*y2/(x2+y4),x=-1.1,y=-1.1,axes=boxed); plot3d(x*y/(x2+y2+2*x*y),x=-4.4,y=-4.4, axes=BOXED); plot3d(sin(
20、x*y),x=-Pi.Pi,y=-Pi.Pi); plot3d(2*sin(x)*cos(y),-6*x/(x2+y2+1),x=-4.4,y=-4.4); plot3d(sin(z/2), t=0.3*Pi/2, z=-4.4, coords=spherical); plot3d(1,t=0.2*Pi,p=0.Pi, coords=spherical, scaling=constrained); plot3d(sin(t)*sin(p2), t=0.Pi, p=0.Pi, coords=spherical, grid=35,35); plot3d(theta,theta=0.8*Pi,phi
21、=0.Pi, coords=spherical, style=wireframe); plot3d(theta,theta=0.8*Pi,phi=0.Pi, coords=toroidal(2), style=wireframe); plot3d(theta,theta=0.8*Pi,z=-1.1, coords=cylindrical, style=patch):2.2 三维参数绘图当二元函数无法表示成时, 有时可以用一组参数方程表示, 关于这类参数方程的Maple作图, 指令如下:plot3d( fx, fy, fz, t=tmin . tmax, u=umin . umax);plot3
22、d( fx, fy, fz, t=tmin . tmax, u=umin . umax, options); plot3d(sin(x+10)/2),cos(y3/3),x,x=-4.4,y=1.4); plot3d(cosh(u)*cos(v),cosh(u)*sin(v),u,u=-2.2,v=0.2*Pi); plot3d(cos(u)*cos(v),cos(u)*sin(v),u2,u=-2.2,v=0.2*Pi,axes=FRAME); plot3d(cos(u)*cos(v),cos(u)*sin(v), sin(u), u=-1.1, v=0.2*Pi, orientation=
23、146,21, scaling=CONSTRAINED);3 特殊作图3.1 图形的显示与合并 with(plots):g1:=plot(cos(x),x=-2*Pi.2*Pi):g2:=plot(sin(x),x=-2*Pi.2*Pi,thickness=5):display(g1,g2,axes=BOXED); g3:=plot3d(2*exp(-sqrt(x2+y2),x=-6.6,y=-6.6):g4:=plot3d(sin(sqrt(x2+y2),x=-6.6,y=-6.6):display(g3,g4);3.2 不等式作图不等式作图基本上有4部分:1 解区间(feasible re
24、gion):此区域完全满足所有的不等式; 2 非解区间(excluded region):此区域不完全满足所有不等式; 3 开线(open lines):不等式的边界, 但不包含此边界; 4 闭线(closed lines):不等式的边界(包含此边界) with(plots):inequal(2*x-5*y ineqns:=x-y+20,2*x+3*y+90,8*x+3*y-27 inequal(ineqns,x=-6.8,y=-10.10,optionsexcluded=(color=wheat),optionsopen=(color=red); neweqs:=ineqns unionx=
25、0,y=0: inequal(neweqs,x=-6.8,y=-10.10,optionsexcluded=(color=wheat),optionsopen=(color=red);3.3 空间曲线绘图 with(plots):spacecurve(cos(t/2),sin(t/2),t,t=0.68*Pi,numpoints=500); spacecurve(3*cos(t), 3*sin(t), t, t=0.12*Pi, 2+t*cos(t), 2+t*sin(t), t, t=0. 10*Pi, numpoints=200); spacecurve(t*cos(2*Pi*t),t*s
26、in(2*Pi*t),2+t,2+t,t*cos(2*Pi*t),t*sin(2*Pi*t),t*cos(2*Pi*t),2+t,t*sin(2*Pi*t),t=0.10,shading=none,numpoints=500,style=line,axes=boxed);3.4 隐函数作图 with(plots):eqn:=x2+y2=1;sol:=solve(eqn,x);plot(sol,y=-1.1,scaling=constrained); implicitplot(eqn,x=-1.1, y=-1.1, scaling=constrained); implicitplot(x2+y)
27、2=x2-y2-1/60, x=-3.3, y=-3.3, grid=100,100); implicitplot3d(x3+y3+z3+1=(x+y+z+ 1)3,x=-2.2,y=-2.2,z=-2.2);implicitplot3d(r=(1.3)x*sin(y),x=-1.2*Pi,y=0.Pi,r=0.1.5, coords=spherical); p:= proc(x,y,z) if x2 with(plots):expr:=6*x/(x2+y2+1);plot3d(expr,x=-6.6,y=-6.6,orientation=-119,37); 上面是expr的三维图, 试看其密
28、度图(contourplot)、等高线图(densityplot): densityplot(expr,x=-6.6,y=-6.6,grid=60,60,style=patchnogrid,axes=boxed); contourplot(expr,x=-6.6,y=-6.6,contours=-2.7,-2,-1,1,2,2.7,grid=60,60,thickness=2);还可以用display将等高线图与密度图绘制在同一张图上: display(%,%);进一步, 还可以为等高线图着色(用filled=true), 并以coloring来指定着色的方向. contourplot(exp
29、r,x=-10.10,y=-6.6,filled=true,grid=50,50,coloring=white,red,axes=boxed); contourplot3d(expr, x=-6.6, y=-4.4, axes=boxed, orientation=-124,67,filled=true,coloring=navy,pink);3.6 对数作图对数作图主要有三种情形:logplot(线性-对数)、loglogplot(对数-对数)、semilogplot (对数-线性). with(plots):logplot(x2-x+4,x=1.12); loglogplot(x2-x+4,x=1.12); semilogplot(x2-x+4,x=1.12); loglogplot(cos(2*t)2+3,sin(t2)2+1,t=0.3);3.7 高级作图指令3.7.1在图形上加上文字textplot和textplot3d指令可以分别在二维与三维图形上加上文字, 其默认方式是文字居中对齐, 如果想要改变对齐方式, 可以利用align=direction来设定, direction选项可以是BELOW、ROG
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1