maple图形制作.docx
《maple图形制作.docx》由会员分享,可在线阅读,更多相关《maple图形制作.docx(16页珍藏版)》请在冰豆网上搜索。
![maple图形制作.docx](https://file1.bdocx.com/fileroot1/2023-5/28/3444dffd-ed5a-45cc-aea8-5b1199d62e7f/3444dffd-ed5a-45cc-aea8-5b1199d62e7f1.gif)
maple图形制作
第五章Maple图形绘制
图形无疑是数学中最令人着迷的部分,一些枯燥的公式可以从图形看出其美.历史上有许多学者利用函数图形解决了学科中的许多难题.
客观地说,Maple不是一种可视化的语言—它不会产生出版品质的图形.然而,它的图形功能非常强大,足以提供更多的关于函数的信息.当然,如果需要,它的图形作适当改进即可满足出版要求.
限于篇幅,本章所有图形未作打印,读者只需在计算机上按照书中语句操作即可观其效果,更多图形功能可通过Maple帮助获得.
1二维图形制作
Maple所提供的二维绘图指令plot可以绘制二维的函数图、参数图、极坐标图、等高线图、不等式图,等等.这些绘图指令有些已经内嵌在其核心程序里,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选项参数主要有:
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:
设定所绘线条的线型(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、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..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(x^2),sin(x^3/10)],x=-2*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(x^2):
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指令无法在二维的平面里直接绘图.但是,在某些情况下,我们可以把平面上的曲线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..t2max],…]);
>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时,(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),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,n^3+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]);
>data3:
=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,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*cos(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=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..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—三角形)
orientation:
设定观看图形的视角(但设定视角的最佳方式是用鼠标拖动图形)
projection:
设定投影的模式
shading:
设定曲面着色的方式
与二维情形相同,在Maple中三维绘图坐标系的选定使用命令coords,缺省坐标系为笛卡尔坐标系(cartesian),此外还有:
bipolarcylindrical(双极坐标),bispherical(双球面坐标),cardioidal(心脏线坐标),cardioidcylindrical(心形柱坐标),casscylindrical(),confocalellip(共焦椭球坐标),confocalparab(共焦抛物线坐标),conical(锥形坐标),cylindrical(柱坐标),ellcylindrical(椭柱坐标),ellipsoidal(椭球坐标),hypercylindrical(超圆柱坐标),invcasscylindrical,invellcylindrical(逆椭球坐标),invoblspheroidal(),invprospheroidal(),logcoshcylindrical(双数双曲余弦柱坐标),logcylindrical(对数柱坐标),maxwellcylindrical(麦克斯韦柱坐标),oblatespheroidal(),paraboloidal(抛物面坐标),paracylindrical(参数柱坐标),prolatespheroidal(扁类球坐标),rosecylindrical(玫瑰形柱坐标),sixsphere(六球坐标),spherical(球坐标),tangentcylindrical(正切柱坐标),tangentsphere(正切球坐标)和toroidal(圆环面坐标).
>plot3d(x*y^2/(x^2+y^4),x=-1..1,y=-1..1,axes=boxed);
>plot3d(x*y/(x^2+y^2+2*x*y),x=-4..4,y=-4..4,axes=BOXED);
>plot3d(sin(x*y),x=-Pi..Pi,y=-Pi..Pi);
>plot3d({2*sin(x)*cos(y),-6*x/(x^2+y^2+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(p^2),t=0..Pi,p=0..Pi,coords=spherical,grid=[35,35]);
>plot3d(theta,theta=0..8*Pi,phi=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);
plot3d([fx,fy,fz],t=tmin..tmax,u=umin..umax,options);
>plot3d([sin((x+10)/2),cos(y^3/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),u^2],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=
[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(x^2+y^2)),x=-6..6,y=-6..6):
g4:
=plot3d(sin(sqrt(x^2+y^2)),x=-6..6,y=-6..6):
display(g3,g4);
3.2不等式作图
不等式作图基本上有4部分:
1解区间(feasibleregion):
此区域完全满足所有的不等式;
2非解区间(excludedregion):
此区域不完全满足所有不等式;
3开线(openlines):
不等式的边界,但不包含此边界;
4闭线(closedlines):
不等式的边界(包含此边界)
>with(plots):
inequal(2*x-5*y<6,x=-3..3,y=-3..3);
>ineqns:
={x-y+2>0,2*x+3*y+9>0,8*x+3*y-27<0};
sol:
=solve(ineqns,{x,y});
ans:
=map(convert,sol,equality);
implicitplot(ans,x=-6..8,y=-10..10);
>inequal(ineqns,x=-6..8,y=-10..10,optionsexcluded=
(color=wheat),optionsopen=(color=red));
>neweqs:
=ineqnsunion{x>=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*sin(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:
=x^2+y^2=1;
sol:
=solve(eqn,x);
plot([sol],y=-1..1,scaling=constrained);
>implicitplot(eqn,x=-1..1,y=-1..1,scaling=constrained);
>implicitplot((x^2+y)^2=x^2-y^2-1/60,x=-3..3,y=-3..3,grid=[100,100]);
>implicitplot3d(x^3+y^3+z^3+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)ifx^2implicitplot3d(p,-2..2,-1..3,0..3);
3.5等高线与密度图
>with(plots):
expr:
=6*x/(x^2+y^2+1);
plot3d(expr,x=-6..6,y=-6..6,orientation=[-119,37]);
上面是expr的三维图,试看其密度图(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(expr,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(x^2-x+4,x=1..12);
>loglogplot(x^2-x+4,x=1..12);
>semilogplot(x^2-x+4,x=1..12);
>loglogplot([cos(2*t)^2+3,sin(t^2)^2+1,t=0..3]);
3.7高级作图指令
3.7.1在图形上加上文字
textplot和textplot3d指令可以分别在二维与三维图形上加上文字,其默认方式是文字居中对齐,如果想要改变对齐方式,可以利用align=direction来设定,direction选项可以是BELOW、ROG