资源描述
第六章 Maple的绘图功能
Maple之所以在欧美流行,一个重要的原因就是它简单但功能强大的图形绘制函数,以及它内建的大量的特殊函数,要以灵活、方便的实现用户所预期的功能。
§6.1 绘图功能概述
可以将Maple的绘图函数简单表示为:
函数名(“公式、数据”,“变量范围”,“函数参数”)
6.1.1 二维图形工作环境设置
在普通的编辑状态,用户是看不见Maple中同绘图相关的菜单与工具栏的,如果用户工作簿中利用函数生成了一个二维图形,并使用鼠标选中系统生成的图形,则Maple的菜单及工具条上就会出现如图所示粉红色椭圆线圈着的新菜单与工具栏。
新增菜单栏各选项与对应的工具栏的作用如下:
1. Style菜单
主要提供参曲线的线型、点、线宽等属性的设置选项。包括的选项有:
Line: 使用“线条”方式显示图形(对应工具栏上的图标)。
Point: 使用“点”方式显示图形(对应工具栏上的图标)。
Patch: 使用带网格的多边形填充图形(对就着工具栏中按钮)。
Patch o/w grid: 使用无网格多边形填充图形(对着工具栏中的按钮)。
练习:用以上“Style” 菜单栏中各种选项观察正弦曲线变化时的表现形式。
2.Legend菜单(图例菜单)
例如:在同一坐标系下作正弦与余弦的图形并给出图例。
解 (1)作图:
> plot([sin(x), cos(x)], x=-Pi..Pi,color=[red,blue], style=[point,line]);
(2)选“Legend-Edit Legend”菜单:
选中菜单,出现两个可选项:“Show Legend”与“Edit Legend”。若选后者则有
填入不同曲线所代表的函数即可得
2.Axes菜单----可用工具按钮给出不同坐标原点下的坐标系等
3.Projection----选择坐标轴是否按等比例显示,默认为不按,即Unconstrained
4.Export----将所选择图形对象另存为其他图形对象,常用的格式有“JPG”、“GIF”、“BMP”等Windwos中的常见格式。
5. 具条的最左方还有一项数据显示功能,它以当前坐标轴为基准显示鼠标的点击位置。
练习:在同一个坐标系下显示出函数exp(-abs(x)、正弦及余弦在[-Pi,Pi]的图形,
并给出图例。(要求:指定不同线色、线型,给出等比例坐标系。)
解
>plot([exp(-abs(x)),sin(x),cos(x)],x=-Pi..Pi, color=[red,
blue,yellow], style=[line,point,line]);
6.1.2 三维图形工作环境设置
当选中Plot3D等三维图形生成函数创建的对象时,菜单栏除会出现同选中二维图形相同的几个选项外(但选项的内容多数发生了变化),还新增了“color”选项。
比二维时增加了:
Patch and contour: 无网格多边形填充加等高线
Hiden line: 无填充,多边形显示
Counter: 等高线显示
Wireframe: 无填充,多边形透射显示
2.Color菜单
主要提供对三维图形着色方案的选择,以及额外光源的使用方案。
3.Projection菜单
新增了对视角的选择,包括缺省的:“No Perspective”,以及“Near Perspective”、“Medium Perspective”和“Far Perspective”。
练习: 利用上图,选取菜单选项试之,观察结果以及哪些功能无法实现(因是盗版软件)。
在图形上拖动鼠标会产生旋转物体的效果,具体方法还需用户自己实践总结。
6.1.3 动画工作环境设置
利用plots程序库提供的animate或animate3d函数,用户可以轻松地建立一组动态画面,如果创建了一个二维图形的动画,当点击所创建的动画对象时,会出现动画工具条,可利用其上的图标控制动画的播放。
练习:将numpoints=12,frames=30的数据作一定的改动,观察图形动画结果。
需要提醒读者的是,Maple在菜单、工具栏中提供的处理图形的方法,都集成在以鼠标右键点击图形对象后的生成的菜单中,而且绝大部分都可以在生成图形时在函数参数中设定。但可以通过函数设定的的参数中的绝大部分却没有集成在工具栏或菜单中,Maple只是将最常用的参数集成起来,因此有很多效果是无法通过鼠标来实现的。所以读者如果想系统的了解Maple的图形处理功能,就还需要继续阅读后续章节。
6.1.4 绘图程序库
除了系统自带的函数plot,Plot3d外,Maple与画图有关的程序包有:plots, plottools, geometry, geom3d以及starplots。每个程序库内的函数都有自己专门的处理对象。它们的特点概要总结如下。
1. pots程序库
是最常加载的程序库。其中animate函数可以生成动画。如果需要观察某一函数随时间
或位置变化的效果,使用它是十分方便的;contourplot可以画等高线,使得对一些不容易选择观察角度的三维物体可以比较不同部位的高低差别;display函数可以同时将几组图形显示在一个图形对象上,非常适用于比较函数间的差别;implicitplot函数可以对方程作图。许多情况下,我们并不能得到显式的函数间的关系,这时可以通过此函数对方程作图而观察出函数特性。这些函数都将在后面详细介绍。由于二维与三维函数命令有许多相似,故只需侧重掌握某一维度上的用法,另一个函数也可以依法处理。必要时可通过“?plot”的方式获得联机帮助。
2. plottools程序库
提供了许多生成基本几何体的函数,如画弧函数arc,画圆函数circle,画多边形函数polygon,旋转函数rotate,比例放大函数scale,画矩形函数rectangle,画球体函数sphere,画半球函数hemisphere以及平移函数transform,变换函数transform和反射函数reflect等等。
3. geometry及geom3d程序库
主要提供了为解决二维欧基里德空间内解析几何问题的各种专用函数,如判断点共线(IsOnLine)、判断平行(AreParallel)、判断是否垂直(ArePerpendicular),以及是否相似(AreSimilar)、相切(AreTangent,求交点等等。由于此程序内包含的函数十分庞大,这里令列出其中的一部分,读者可通过“with(geometry);”命令显示其中的全部函数。
对应的,geom3d程序库的针对目标是三维欧基里德空间内的问题,它也包含有同geometry程序库功能类似的函数。
4.statplots子程序库
是stats 程序库的子集,通过“with(stats)”或“statplots()”命令来调用。它的功能主要集中在对统计学数据的图形显示上。包括函数有柱状图boxplot、统计图histogrm、散点图scatterplot以及改变坐标的xscale, yscale, zscale, xshift, yshift, zshift, xyexchange, yzexchange, yzexchange等。
§6.2 二维图形绘制——PLOT及相关函数的应用
先介绍有关的参数设定,再介绍几种基本函数的画法。
6.2.1 二维绘图参数设置
plot是Maple系统自带函数,不需要加载任何程序库就可直接调用。参数相当繁多:
1. adaptive
系统默认为TRUE。如果设为false将不能使用自适应作图功能(adaptive plotting).
2. axes
设置坐标轴的类型,可以是FRAME、BOXED、NORMAL和NONE之一,默认为NORMAL。
3. axesfont=1
设置坐标轴标注文字的字体,类似于font选项。
4.Color=n(n=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,或HUE配色方案。方法如下所示:
> macro(skyblue=COLOR(RGB,0.1960, 0.6000, 0.8000));
> plot(tan(x),x=-1..1,color=skyblue);
如果用户想用不同的颜色标记一组曲线的话,可以使用“color=[n1,n2]”的形式表示。“n1”,“n2”按输入顺序对应函数中的曲线名称。
4. coords=<name>——坐标系的选取(参P306)
(1)极坐标系时的plot函数的调用形式为:
plot(f(theta),theta=a..b,cords=polar);
其中,f(theta)为极半径,theta=a..b为极角变化的范围,cords=polar表示选用极坐标系。例如:
> with(plots):
> plot(cos(16*theta),theta=-Pi..Pi,coords=polar,scaling=
constrained);
又如:
> plot(cos(sin(theta^(-5))),theta=-10*Pi..10*Pi,coords=
polar);
(2)双极坐标曲线 坐标定义为
如:
> plot(cos,-Pi..Pi,coords=bipolar);
(3)椭圆坐标曲线 坐标定义为
如:
> plot(cos,-Pi..Pi,coords=elliptic);
(4)抛物线 坐标定义为
如:
> plot(cos,-Pi..Pi,coords=parabolic);
(5)麦克斯韦 坐标定义为
> plot(cos,-Pi..Pi,coords=maxwell);
可能一般读者对这两个坐标系都不太了解,Maple提供了一个函数coordplot可以帮助用户形象的理解各种坐标系的特点。利用“coordplot(坐标系名)”的形式,Maple可以显示出它所支持的所有坐标系的横、纵坐标轴的关系。在此,我们挑选了几种有特点的坐标系,如下图:
> ?coordplot
> with(plots):
coordplot(maxwell); 麦克斯韦
coordplot(maxwell,view=[-0.5..0.5,.5..1.5],labelling=false);
coordplot(invcassinian); 反卡斯尼亚
coordplot(cassinian,linestyle=[0,7],labelling=middle);
coordplot(logcosh,[-1..1,Pi/10..2*Pi/5]);
a := plot(sin(x)^2-cos(x)^2,x=0..2*Pi,coords=polar,thickness=0):
b := coordplot(polar,[0..1.5,0..2*Pi],labelling=true):
display([a,b]);
r1 := plot(sin(cos(x)),x=-2*Pi..2*Pi,coords=bipolar,thickness=3):
r2 := coordplot(bipolar):
display([r1,r2]);
infolevel[coordplot]:=2:
coordplot(rose);
coordplot: u range: -Pi .. 7/13*Pi
coordplot: v range: -Pi .. Pi
coordplot: grid: [ 13 17 ]
coordplot: view: [ -1 .. 2.7 -2.4 .. 2.4 ]
coordplot: labelling: false
coordplot: u range: -Pi .. 7/13*Pi
coordplot: v range: -Pi .. Pi
coordplot: grid: [ 13 17 ]
coordplot: view: [ -1 .. 2.7 -2.4 .. 2.4 ]
coordplot: labelling: false
coordplot: u range: -1 .. 2
coordplot: v range: 0 .. Pi
coordplot: grid: [ 11 11 ]
coordplot: view: [ 0 .. 1.7 0 .. 1.7 ]
coordplot: labelling: false
coordplot: u range: -2 .. 2
coordplot: v range: 0 .. Pi
coordplot: grid: [ 17 17 ]
coordplot: view: [ 0 .. 3 0 .. 2.7 ]
coordplot: labelling: false
coordplot: u range: -1 .. 1
coordplot: v range: 1/10*Pi .. 2/5*Pi
coordplot: grid: [ 13 13 ]
coordplot: view: [ -1.35 .. .6 -1.05 .. 1.05 ]
coordplot: labelling: false
coordplot: u range: 0 .. 1.5
coordplot: v range: 0 .. 2*Pi
coordplot: grid: [ 7 13 ]
coordplot: view: [ -1.1 .. 1.1 -1.1 .. 1.1 ]
coordplot: labelling: false
coordplot: u range: 0 .. 2*Pi
coordplot: v range: -1.5 .. 1.5
coordplot: grid: [ 17 15 ]
coordplot: view: [ -2.5 .. 2.5 -2.5 .. 2.5 ]
coordplot: labelling: false
coordplot: u range: -2 .. 2
coordplot: v range: 0 .. 2
coordplot: grid: [ 13 13 ]
coordplot: view: [ 0 .. 3 0 .. 3 ]
coordplot: labelling: false
P306~
利用以上参数设置可得如下图形:
> with(plots):
> setoptions(title=`Family Plot`,axes=BOXED,thickness=2);
> plot({seq(sin((x^2+(0.4*i)^2)/4)/(x^2+(0.4*i)^2+Pi),i=1..10)},x=-3..10);
参数曲线的绘制
plot([x(t),y(t),t=a..b],opts);
或 plot([r(t),theta(t),t=a..b],cords=polar,opts);
第一种表达式为直角坐标下参数方程的形式,后一种为极坐标下参数方程的形式。函数opts的参数同普通的plot函数参数一样。注意此时参数方程被“[ ]”括住,而不同于平常利用“{ }”括住的方程组的表式形式。请看如下的例子:
> with(plots):
> x(t):=sin(t):y(t):=cos(t):
> plot({x(t),y(t)},t=-Pi..Pi,thickness=2);
> plot([x(t),y(t),t=-Pi..Pi],thickness=2);
用参数方程画出的参数曲线有时是十分有意思的。这些曲线甚至可以模拟出实际中的许多事物,如枫叶、云彩、手掌、小动物等。有兴趣的读者可以尝试用以下的函数绘图
> with(plots):
> s:=t->100/(100+(t-Pi/2)^8):r:=t->s(t)*(2-sin(7*t)-cos(30*t)/2):
> plot([r(t),t,t=-Pi/2..3/2*Pi],coords=polar);
16
展开阅读全文