在Mathematica中作图.docx
《在Mathematica中作图.docx》由会员分享,可在线阅读,更多相关《在Mathematica中作图.docx(21页珍藏版)》请在冰豆网上搜索。
在Mathematica中作图
在Mathematica-中作图
第6章在Mathematica中作图
6.1二维函数作图
二维函数作图命令Plot
In[1]:
=Plot[xSin[1/x],{x,-0.5,0.5}]
图6-1
Out[1]=-Graphics-
Plot命令的一般形式:
Plot[f,{x,xmin,xmax},选项]
在区间{x,xmin,xmax}上,按选项定义值画出函数f的图形。
Plot[{f1,f2,…},{x,xmin,xmax},选项]
在区间{x,xmin,xmax}上,按选项定义的值同时画出函数f1,f2,…的图形。
Mathematica绘图时允许用户设置选项值而提出对绘制图形的细节各种要求。
例如:
要求取消坐标轴,给图形加框线等要求。
每个选项都有一个确定的名字,以“选项名->选项值”的形式放在Plot中最右边位置,如In[3]所示。
In[2]:
=Plot[{Sin[x],Sin[2x]},{x,-0.5,6.7}]
图6-2
Out[2]=-Graphics-
In[3]:
=Plot[(x^2-x)Sin[x],{x,2,16},AxesLabel->{"x","f(x)"}]
(*给x、y坐标轴分别加标记"x","f(x)"*)
图6-3
Out[3]=-Graphics-
In[4]:
=Plot[Sin[x],{x,0,3},Frame->True,
GridLines->Automatic]
(*给图形加上框线和网格*)
图6-4
Out[4]=-Graphics-
下面列出部分选项及其意义:
AspectRatio图形的高度与宽度的比例,默认值是1/GoldRatio,其中GoldRatio=0.618。
如果要图形按实际情况显示,设置的选项值是Automatic。
Axes是否画坐标轴以及设置坐标轴的中心位置,默认值是True,画出坐标轴。
Axes->None不设坐标轴;Axes->{x0,y0}设置坐标轴中心为{x0,y0}。
AxesLabel设置坐标轴上的标记符号。
默认值是None,不做标记。
用{“字符串1”,“字符串2”}的形式定义轴的横坐标和纵坐标标记。
Frame在图形周围是否加框。
默认值是False;Frame->True画出边框。
Ticks设置坐标轴上刻度的位置,默认值是Automatic,由系统自动定位。
Ticks->None不标坐标刻度;Ticks->{xi,yi}规定x轴和y轴的刻度值,
FrameLabel是否在框的周围加标志。
默认值是None。
FrameLabel->{xmlab,ymlab,xplab,yplab}从底边开始按顺时针方向,设置外框的
边缘名称。
PlotLabel图形的名称标志。
默认值是None,不列标志。
PlotLabel->lab则规定图名是
lab。
任意输出格式给出的表达式都可作为图名。
字符串用"text"的形式给出。
PlotColor是否产生彩色颜色。
默认值是True。
DisplayFunction说明用什么机制显示图形。
默认值$DisplayFunction,其意义是立即
在屏幕上显示图形。
如果要在Plot中不输出图形,则再现图形时则需要设置选
项DisplayFunction->$DisplayFunction。
PlotRange指定绘图的范围。
系统用默认值时会自动切除区间奇点附近区域的曲线。
PlotRange->All画出所有点;PlotRange->{y0,y1}画出函数值在[y0,y1]范围内的图;
PlotRange->{{x0,x1},{y0,y1}}画出区间在[x0,x1],函数值在[y0,y1]的图形。
以上是Plot函数的第一类可选项,意在告诉系统如何显示图形,以及对坐标轴、刻度等细节的处理。
请上机观看DisplayFunction在演示图形中的效果:
In[1]:
=Plot[x^3-2,{x,0,10},DisplayFunction->Identity]
In[2]:
=Show[%,DisplayFunction->$DisplayFunction]
曲线样式
Plot的第二类选项用于控制图形的生成过程,设置怎样构造图形元素。
例如:
设置加大画图取样的点数,设置曲线的颜色等特性。
选项
默认值
说明
PlotPoints
25
采样函数的点数,对于函数值变化剧烈的表达式,应设定较大的点数
PlotStyle
Automatic
设置曲线的样式。
可设置曲线的颜色、线条的高度和虚实等形式。
默认值画出一条黑色实线的曲线。
MaxBend
10
曲线相邻线段之间的最大夹角。
当相邻的两段折线之角的折角大于MaxBend的值时,系统自动增加一些中间点,使折线变的更加光滑。
PlotDivision
20
对函数取样时细分区间的最大因子,由于有些函数具有无穷振荡的图形,为了避免MaxBend一直增加中间点以满足折线的夹角要求而陷入死循环。
我们称曲线的颜色、曲线的线形和线的宽度等特性为曲线样式。
下列用于设置曲线的样式选项PlotStyle的调用形式和选项值。
GrayLevel[g]
灰度比值,g取0到1之间的数。
0为白色,1为黑色。
RGBColor[r,g,b]
红、绿、兰三色的强度,r、g和b取0到1之间的数。
Thickness[t]
显示线的宽度为t,以占整个图的宽度的比来量度。
Dashing[{d1,d2,…}]用虚线段序列画线。
PointSize[d]给出一个点的大小d
PlotStyle->s1为所有曲线规定一种样式s1
PlotStyle->{{s1},{s2},…}为一曲线序列循环地使用样式si
In[1]:
=Plot[{Sin[2x],x},{x,-1.7,1.7},
PlotStyle->{Dashing[{0.01,0.04}],
Dashing[{0.03,0.01,0.01,0.02}]}]
图6-5
Out[1]=-Graphics-
请上机观看In[2]和In[3]的运行结果:
In[1]:
=Plot[{x,x^2},{x,-10,10},PlotStyle->{{GrayLevel[0.5]},{RGBColor[0,1,1]}}]
In[2]:
=Plot[{x,2x},{x,1,3},PlotStyle->{{Thickness[0.01]},{Thickness[0.05]}}]
重画和组合图形
✧Show与GraphicsArray
Mathematica在屏幕上显示图形后用Show命令再现图形,可用Show命令组合图形和重新定义图形选项。
例如:
(请上机观看In[1]和In[2]的运行结果)
In[1]:
=pic1=Plot[x^5-Cos[x],{x,-2,2}]
In[2]:
=Show[pic1,Frame->True,GridLines->Automatic]
需要注意的是用Show命令重新显示图形时,只允许使用Plot第一类可选项。
(在Mathematica1.2版中,如果原来的图形有颜色设置,现在也要保持颜色显示,应加上可选项PlotColor->True。
)
Show的常用形式:
Show[pic]显示图形pic
Show[pic,选项名->选项值]设置图形pic的各种选项并显示图形
Show[pic1,pic2,…,picn]将图pic1,pic2,…,picn放在一幅图中显示
在Show中设置不同的选项产生不同的图形效果,从各种角度观察同一个图形,从中再找出选项的最佳设置值。
Show可用于Plot3D,ParametricPlot等几乎所有作图命令的图形再现。
GraphicsArray组合多个图形成为一个数组,图形数组的数组元素是一幅图。
常用形式有:
Show[GraphicsArray[{p1,p2,...}]]
依次显示每个图形pi
Show[GraphicsArray[{{p11,p12,...},{p21,p22,...},...}]]
按矩阵形式显示每个图形
In[8]:
=tt=Table[Plot[Sin[x+t],{x,0,2Pi},
DisplayFunction->Identity],{t,0,8}];
In[9]:
=Show[GraphicsArray[Partition[tt,3],
DisplayFunction->$DisplayFunction]]
图6-8
Out[9]=-GraphicsArray-
✧图形表达式
执行一次Plot除了演示函数的图形外,系统在内部生成一个图形表达式,在输出行中可看到图形表达式的类别。
例如:
Out[1]=-Graphics-。
Mathematica中共有6种图形表达式。
每个绘图命令都对应某一类图形表达式。
Show命令的作用对象是Plot生成的图形表达式,所以Show只能用第一类选项而不能用第二类选项。
下列有关图形表达式的操作命令:
Options[pic]显示图形pic中所用的全部选项
Options[pic,opt]显示图形pic的opt选项值
InputForm[pic]显示pic的图形表达式
SetOptions[绘图命令,选项名→选项值]修改或设置作图命令选项的默认值
请在计算机上观看下列命令运行结果:
In[1]:
=d1=Plot[Sin[x],{x,-Pi,Pi}]
In[2]:
=d2=Plot[Cos[x],{x,-2Pi,2Pi}]
In[3]:
=Show[d1,d2](*同时绘出d1和d2*)
In[4]:
=Options[Plot,PlotRange]
In[5]:
=Show[d1,PlotRange->{-0.5,0.5}]
In[6]:
=Options[d1]
In[7]:
=Options[d1,PlotRange]
In[8]:
=InputForm[d1]
在Out[8]中,屏幕上显示作图所取的点线元素,程序的最后一段也可看到各选项的值。
也可对Plot设置选项值,请在计算机上观察下列命令的运行结果。
In[1]:
=Plot[Sin[x]+Cos[x],{x,0,2Pi}]
In[2]:
=SetOptions[Plot,AspectRatio->Automatic]
In[3]:
=Plot[Sin[x]+Cos[x],{x,0,2Pi}]
如果计算的对象不是显函数。
例如:
是一个函数表达式的表。
Mathematica在作图时要先计算出计算对象的值,然后再计算构造图形所需的x和相应的函数值f(x)。
这时计算对象前必须加以Evaluate,以便对计算对象强行求值。
Plot[Evaluate[f],{x,xmin,xmax}](2.0版以上)
In[1]:
=Plot[D[x^2/(10+x),{x,2}],{x,-6,6}]
Out[1]=(*输出略,显示有错误等信息,不作图*)
In[2]:
=Plot[Evaluate[D[x^2/(10+x),{x,2}]],{x,-6,6}]
(*图略*)
Out[2]=-Graphics-
两维参数绘图
ParametricPlot[{x[t],y[t]},{t,t0,t1},选项]
按照选项,画x轴,y轴坐标为{x[t],y[t]},参变量t在[t0,t1]中的一条参数曲线
ParametricPlot[{{x1[t],y1[t]},{x2[t],y2[t]},…},{t,tmin,tmax},选项]
按照选项,画一组参数曲线
在Plot中使用的选项都可用在ParametricPlot中。
ParametricPlot[{Sin[t],Sin[2t]},{t,0,2Pi}]
图6-9
ParametricPlot[{Cos[t],Sin[t]},{t,0,2Pi},
AspectRatio->Automatic]
图6-10
6.2三维函数作图
函数作图命令Plot3D
绘制函数f(x,y)在平面区域上的三维立体图形的命令是Plot3D,Plot3D的大部分选项设置与Plot选项设置大同小异,Plot3D还有光源等选项。
Plot3D的一般形式是:
Plot3D[f[x,y],{x,x0,x1},{y,y0,y1},选项]
在区域x∈[x0,x1]和y∈[y0,y1]上,按选项画出空间曲面实数值表达式f[x,y]。
Plot3D[{f[x,y],s[x,y]},{x,x0,x1},{y,y0,y1},选项]
按s[x,y]设置的灰度函数(GrayLavel)或颜色函数(Hue)画函数f[x,y].
下列Plot3D的常用选项:
选项名
默认值
说明
Axes
True
是否包括轴
PlotRange
Automatic
可用All,{z0,z1}或{{x0,x1},{y0,y1},{z0,z1}}
PlotLabel
None
在轴上加标志,PlotLabel->z设置z轴的标志
PlotLabel->{A,B,C}设置x,y,z轴的标志
AspectRatio
1:
1:
0.4
图形的高度与宽度之比
ViewPoint
{1.3,-2.4,2}
观察曲面所在的点,可以设定任何观察点
Boxed
True
是否在曲面周围加立体框
BoxRatios
{1,1,0.4}
三维立体边长比率
Mesh
True
是否在曲面上画出xy网格。
用False取消网格
HiddenSurface
True
曲面被挡住的部分是否隐掉。
Shading
True
曲面上是否涂阴影
Light
False
是否设置光源
LightSources
点光源的方向和颜色。
说明形式:
{光源位置,光源光色}。
光源位置
用{x,y,z}点坐标表示,光源光色用RGBColor等函数表示。
缺省值可用Option[]查看。
AmbientLight
GrayLevel[0]
漫射光设置。
默认值是黑色,表示没有漫射光。
可用灰度或颜色设置任意漫射光。
ClipFill
Automatic
作出图中被切掉的部分的填充方式。
PlotPoint
15
在函数在每个方向上的取样点数。
表6-2
In[1]:
=Plot3D[Sin[xy],{x,-Pi,Pi},{y,-2,2},PlotPoints->45,
Axes->False,Boxed->False];
图6-11
请上机观察下列运行效果:
In[10]:
=Plot3D[Cos[x]Sin[xy],{x,0,3},{y,0,3}]
In[11]:
=Plot3D[{Cos[x]Sin[xy],GrayLevel[x/3]},{x,0,3},{y,0,3}]
In[12]:
=Plot3D[-xyExp[-xx-yy],{x,-3,3},{y,-3,3},PlotPoints->30,
PlotPoints->30,ViewPoint->{2,-1.2,1.7},AspectRatio->Automatic];
用Plot3D画一个三维图形时,它将这个目标放在一个透明的长方体盒子中。
默认值Boxed->True,显示盒子的边框。
设置Boxed->False则不显示盒子的边框。
设置选项BoxRatios能使盒子在不同的方向压缩或拉长。
ViewPoint是一个重要的选项,相当于拍摄图形的照相机放在什么位置。
不同的位置看到曲面的形式效果大不一样。
ViewPoint的典型设置如下:
{0,-2,0}正前方{0,0,2}正上方
{0,-2,2}前上方{0,-2,-2}前下方
{-2,-2,0}盒左角{2,-2,0}盒右角
三维参数作图
ParametricPlot3D[{x,y,z},{u,u0,u1,(du)},{v,v0,v1,(dv)},选项]
在u∈[u0,u1],v∈[v0,v1]范围内,画三维参数空间曲面,x=x(u,v),y=y(u,v),z=z(u,v),
ParametricPlot3D[{x,y,z,s},{u,u0,u1,(du)},{v,v0,v1,(dv)},选项]
按照颜色函数关系s(u,v)画出三维参数空间曲面,其中:
x=x(u,v),y=y(u,v),z=z(u,v),
ParametricPlot3D[{x,y,z},{t,t0,t1},选项]
画三维参数空间曲线,其中:
x=x(t),y=y(t),z=z(t),t∈[t0,t1]
三维参数命令易于描绘用极坐标、球坐标和柱坐标表示的空间图形。
在使用中注意参数的取值范围,不要对绘制曲面重复覆盖,多次重复绘制既花费了更多的时间又会使曲面上的网络降低光滑程度。
In[1]:
=ParametricPlot3D[{uCos[u](4+Cos[v+u]),
uSin[u](4+Cos[v+u]),uSin[v+u]},
{u,0,4Pi},{v,0,2Pi},PlotPoints->{60,12}]
(*Out[1]的图略*)
In[2]:
=Show[%,Boxed->False,Axes->False]
图6-12
Out[2]=-Graphics3D-
In[3]:
=ParametricPlot3D[{Cos[u]Cos[v],Sin[u]Cos[v],Sin[v]},{u,0,2Pi},{v,-Pi/2,Pi/2}]
In[4]:
=ParametricPlot3D[{Cos[u]Cos[v],Sin[u]Cos[v],Sin[v]},
{u,0,4Pi},{v,-Pi,Pi}]
请在计算机上观察并比较In[3]与In[4]的图形输出效果,从中比较参数的取值范围对图形的影响。
6.3等值线图和密度图
✧等值线图
等值线把曲面上高度相等的各点连接起来,等值线序列对应于均匀间隔的z=f(x,y)值数列。
ContourPlot[f[x,y],{x,xmin,xmax},{y,ymin,ymax},选项]
ContourPlot具有默认的选项设置Frame->True,执行ContourPlot以后,Mathematica送回一个ContourGraphics目标。
如果函数值的网络不够细,等值线图可能会有误差,当函数值变化幅度较大时,ContourPlot能给出规则的等值线图,当函数值变化太小曲面几乎是平面时,可能给出不规则的等值线图。
In[1]:
=ContourPlot[Sin[Cos[x^2+y^2]],{x,-10,10},{y,-10,10}]
图6-13
Out[1]=-ContourGraphics-
对同一函数加大取值点的数目等选项后,等值线的表现也有变化。
In[2]:
=ContourPlot[Sin[Cos[x^2+y^2]],{x,-10,10},{y,-10,10},PlotPoints->50,ContourLines->False,ContourSmoothing->True]
图6-14
Out[2]=-ContourGraphics-
ContourPlot中常用选项如下。
选项名称
默认值
说明
Contour
10
等值线的数
PlotPoints
15
每个方向上求值的点数
PlotRange
Automatic
f[x,y]即z值的范围,可选{z1,z2},All等
ContourSpacing
Automatic
是否使用明暗度
ContourSmoothing
None
是否光滑等值线
另外,AspectRatio,Axes,AxesLable,Frame,FrameLable和Ticks等选项的意义与在Plot命令中的意义基本相同,在此不再细说。
✧密度图
密度图与等值线图的作用相似。
在密度图中,相等的数值用同一灰度表示。
画密度图命令形式为:
Densityplot[f[x,y],{x,xmin,xmax},{y,ymin,ymax},选项]
DensityPlot也具有默认的选项设置Frame->True,执行DensityPlot以后,Mathematica送回一个DensityGraphics目标。
DensityPlot[Sin[Cos[x^2+y^2]],{x,-10,10},{y,-10,10}]
✧图形之间的转换
等值线图、密度图与曲面图形实质上是同一函数的三种不同表现方式。
转换命令
说明
Show[ContourGraphics[g]]
将图g转换成等值线图
Show[DensityGraphics[g]]
将图g转换成密度图
Show[SurfaceGraphics[g]]
将图g转换成曲面图
Show[Graphics[g]]
将图g转换成二维图
例如:
In[1]:
=Plot3D[x^2+y^2,{x,0,2},{y,0,2}](*图略*)
In[2]:
=Show[ContourGraphics[%]](*图略*)
In[3]:
=Show[DensityGraphics[%%]](*图略*)
6.4数据绘图
6.4.1二维数据绘图
有时需要绘出给定数据的图形,Mathematica也有直接画出数据的图形命令,还可以使用Fortran或C等其它语言生成的数据作图。
二维数据的表示形式有:
{{x1,y1},{x2,y2},…}数据点{xi,yi},i=1,2,…,n.
{y1,y2,…}当xi=i时可省略xi
二维数据绘图命令
说明
ListPlot[{{x1,y1},{x2,y2},…}]
画出数据点{x1,y1},{x2,y2},…
ListPlot[{y1,y2,…,yn}]
画出数据点{{1,y1},{2,y2},…,{n,yn}}
ListPlot[数据,PlotJoined->True]
画一条通过数据点的光滑曲线
表6-