第三章Mathematica的图形.docx
- 文档编号:29787099
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:38
- 大小:121.24KB
第三章Mathematica的图形.docx
《第三章Mathematica的图形.docx》由会员分享,可在线阅读,更多相关《第三章Mathematica的图形.docx(38页珍藏版)》请在冰豆网上搜索。
第三章Mathematica的图形
第三章Mathematica的图形
在第一、二章里,读者已经初步了解了如何用Mathematica的系统函数生成函数表达式的图形,这一章中将要详细地讨论与图形有关的各种问题,包括系统提供的各种图形函数,图形函数使用方面的许多进一步的细节,Mathematica系统的图形原理以及如何自己生成和构造图形的问题等等。
Mathematica系统有很强的作图功能,这并不是说用它作出的图比其他专门的图形系统更漂亮。
客观地讲,这个系统的图形功能并不比一般专用的图形系统更强。
但是,由于这里的图形功能是融合在强大的符号和数值计算功能之中,得到一大批基本计算函数的支持,这些计算函数又能够方便地组合成为更复杂的计算函数,这些就使得Mathematica系统的作图能力和它的图形能力在解决数学问题和一般的计算问题中的价值表现得特别突出。
在Mathematica系统里作图时,人们只需要关心图形的逻辑性质和结构,不必关心图形应该怎样显示出来等等细节。
例如,不必关心一个三维图形应当如何投射到计算机的(二维的)屏幕上,只要指定一个观察点的位置,其他问题系统都能够自动处理。
Mathematica图形功能的最重要特点之一是支持作各种函数图形,包括一般显函数的二维、三维函数图形(平面曲线和空间曲线),参数形式表示的二维和三维函数图形(平面曲线、空间曲线和曲面),以及函数的等值线图和密度图等等。
图形可以着色、加光照、任意旋转等。
系统的作图函数还有许多可选的参数项(称为可选项,后面要详细地讨论),使用它们可以在作图时指明各种特殊的要求。
在Mathematica系统里图形也用表达式表示,可以象构造其它表达式一样构造图形,也可以象定义别的函数一样定义生成图形的函数和自己的作图函数。
这些都是本章的内容。
这里首先讨论系统的各种函数图作图功能。
读者可以依次运行下列程序仔细体会:
p=Plot[Sin[t],{t,0,2Pi}]
Options[%]
p[[2]]
p[[1,1,1,1]]
ListPlot[%]
p[[1]]
p[[1,1]]
p[[1,1,1]]
这个例子很重要,它从一个侧面说明在Mathematica中“任何事情都是一个表”。
3.1基本二维函数作图
前面的章节里已经讲过,最基本的二维函数作图由系统函数Plot实现,这个函数的使用形式有两种:
Plot[表达式,{变量,下限,上限},可选项]
Plot[{表达式,表达式,…},{变量,下限,上限},可选项]
函数Plot的第一个使用形式用于作一个函数表达式的图形,第二个形式用于在一个图里作多个函数表达式(表达式,表达式,…)的图形,这些表达式要放在花括号里面。
上面描述中的变量表示这个(或这些)表达式里的(唯一的)变量,下限和上限表示要作的图中变量取值的下限和上限,关于可选项问题下面详细讨论。
可选项的意思就是可以有也可以没有,它们可以不出现,也可以有一个或者多个。
如果在使用时不给出任何可选项,Plot就会按照系统内部确定的方式作图;如果给定了一些可选项的实际值,Plot就会按照这些值(以及没有给出的那些可选项的内部默认值)完成要求的图形。
进一步的,Plot(以及其它具有可选项参数的函数)的可选项的内部默认值也可以在任何时候由用户重新设定。
这为系统的使用者提供了广泛的灵活性。
具有可选项参数是许多Mathematica函数的特征(不仅仅是作图函数),这种特征可以使一个函数的功能能够覆盖许多不同的但又具有部分一致性的情况,同时又不引起使用上的麻烦。
不但系统函数可以有可选项,用户定义函数也可以有这种特征,后面的章节里将讨论与此有关的问题。
允许可选参数的函数(过程)也是一些其他现代计算机程序设计语言的特征。
Ada,Common-Lisp,C++等等语言也支持可选参数,但是Mathematica系统的可选参数机制比其他语言的相应机制功能更强,使用方式也更加灵活。
关于函数Plot的例子读者在前面的章节里已经看到了一些,下面主要讨论这个函数的各个可选项。
对于任何一个具有可选项参数的函数,在函数使用时如果要指定可选参数,这些可选参数都应当放在所有必要参数的后面。
每一个可选项都有一个名字,在使用时用:
可选项名—>可选项值
的形式给名字为可选项名的可选项指定值。
对于每一个可选项,读者应当知道:
可选项的名字、可选项的意义、它的可能的取值、系统的默认值(注意,如上所述,默认值是可以重新设定的)。
由于从现在向后,读者的例子会越来越长。
为了避免麻烦,今后的例子里将不再列出In[xx]和Out[xx]。
凡是放在单独的行里,从行头开始的表达式都是读者的例子。
3.1.1Plot的第一类可选项
Plot的可选项可以分为两类,这两类可选项的差别将在后面讨论。
现在首先看一看它的第一类可选项。
从篇幅和实用考虑,这里只列举其中最常用的,讨论它们的细节。
关于Plot的全部可选项,读者可以查看系统手册。
1.PlotRange,指定Plot的作图范围。
内部默认值是Automatic,表示由系统确定作图范围,这时系统能根据函数值的情况自动地处理把函数图形的某一部分显示出来,当函数在作图区间存在奇点(无穷值点)或很窄的尖峰时,系统会将这一部分切掉。
例如:
Plot[Tan[x],{x,-2Pi,2Pi}]
读者可以看到函数的奇点被切掉的情况.PlotRange的其他可能的值有:
All,表示画出函数值的全部情况,当发现系统消掉了重要的尖峰时可以使用这个可选项值重画图形.另外有两种直接说明作图范围的写法:
用{y1,y2}要求Plot作出纵坐标在[y1,y2]范围内的图形,也可以用形式给出图形的(x,y)坐标范围.下式画出Tan函数值在-10到10的图形:
Plot[Tan[x],{x,-2Pi,2Pi},PlotRange->{-10,10}]
2.AspectRatio,指定作图的纵横比例.默认值约0.6181:
1,即是黄金分割的比例(确切说是1/GoldenRatio,其中GoldenRatio一个系统常量,它的值是
.可以为AspectRatio指定人和一个其他数值.如果希望按时机情况作图,则需要将这个可选项设置为Automatic.下式按时机比例作出sinx的图形:
Plot[Sin[x],{x,0,4Pi},AspectRatio->Automatic]
3.Axes,说明是否画坐标轴的中放在什麽位置。
内部默认值是Automatic,表示画坐标轴并自动确定坐标的位置.可以用None告诉Plot不设坐标,或者用{x,y}形式的值要求Plot把坐标的交叉点设在点{x,y}的位置.例如:
Plot[Sin[x],{x,0,2Pi},Axes->{0,-1}]
4.Axeslabel,说明坐标轴上的标记符号。
内部默认值是None,表示不做标记。
可以用{x,y}形式的值要求Plot把横坐标和纵坐标记为x和y,这里的x,y都可以是任何用双引号括起来的字符序列(用双引号括起来的字符序列叫做”字符串”。
字符串也是Mathematica系统的一种基本的数据对象,这方面的内容在后面章节力讨论)。
例如:
Plot[9.82t^2,{t,0,3},PlotRange->All,AxesLabel->{“t”,“spped”}]
5.Ticks,规定坐标轴上的位置。
内部默认值是Automatic,表示自动确定坐标轴刻度。
可以用None要求Plot不表出坐标刻度。
也可以用{xt,yt}形式的值规定刻度,其中的xt.yt可以是None,表示在一个轴上不做刻度;或者是{t1,t2--- },表示要求在一个轴是按位置t1,t2,---设置坐标轴刻度。
6.DisplayFunction,说明用什么机制显示图形。
系统的默认值是一个系统变量($DisplayFunction),这个变量的值调用系统的屏幕先是函数。
拥护也可以定义自己的相识函数,或者用Identity表示只生成图形,现在不作显示。
函数Plot的工作过程是:
第一步,计算出被作图的函数表达式在一些点上的值,以这些点做成一条折线(它是函数曲线的近似),作为图形的基本组成部分,这就生成了一个图的内部表示;第二步,根据给Plot函数提供的可选项或内部默认值确定怎样把这个图显示到计算机屏幕上。
3.1.2Plot的第二类可选项
前面讲的第一类可选项都是告诉Plot如何显示图形,包含可能要求它为已有的图增加一些东西,如坐标轴等。
Plot还有第二类可选项用于控制图形的生成过程,控制图形元素的构造,这类可选项有:
1.PlotPoints,为Plot指定计算函数值的(基本)取点数。
内部默认值是15,对于函数值变化比较剧烈的表达式,应当取一个比较大的PlotPoints值,以避免作出的图形在一些区域过分偏离函数的实际图形。
比较下面两个图形:
Plot[Sin[1/x],{x,-2,2}]
Plot[Sin[1/x],{x,-2,2},PlotPoints->50]
2.MaxBend,说明表示函数曲线的折线在相邻的两段之间的最大折角,以度为单位。
Plot在计算函数图形时采用一种自适应算法。
当相邻两段折线之间的折角大于MaxBend的值时,它自动增加一些中间点,以使折线变的更加圆滑。
3.PlotDivision,说明在(基本)初始取点数的基础上细分得限度最多增加多少中间点)。
由于有些函数具有无穷振荡的图形,做他们的图时无论加多少个中间点都不能保证整个区间满足MaxBend的要求,这样就可以导致无限细分下去,使系统垮台。
PlotDivision告诉函数Plot至多在两个初始取点之间增加的点的限制,则就证明了系统不会因为陷入无限度的细分得陷阱而垮台。
4.PlotStyle,说明用什么样的方式做函数图形(曲线)。
默认值是Automatic,由系统自动确定改造方式。
这时Plot用一条黑实线作函数图形。
如果需要,用户可以自己说明图素的形式,要求生成其他形式的曲线,例如把曲线画成一定的宽度,画成曲线,使用某种颜色或灰度等等。
其他做图函数也有PlotStyle选项,使用方法与Plot类似。
PlotStyle的值应当是一个表。
再做一个函数表达式的图形时,这个表里可以有一个或几个描述图素形式的项。
可以使用的项包括:
1)Thickness[t],描述线的宽度,其中t是一个实数,说明要求画线的宽度,这时以整个图的宽度作为1计算,一般用数应远小于1。
2)GrayLevel[i],描述画线时使用灰度,其中的I是一个[0,1]间的数,说明灰度的深浅,其中0表示黑色,1表示白色。
3)RGBColor[r,g,b],说明颜色,其中的r,g,b是三个取值[0,1]间得数,说明所要求的颜色里红色,绿色,蓝色分别的强度。
4)Dashing[{d1,d2,....}],说明用怎样的方式画虚线。
其中的d1,d2,...都是小于1的数,说明虚线分段方式。
这时也以图形的宽度为1。
Plot将循环使用表里的数交替作为线段和空白的长度。
现在读者可以画出彩色的图形:
Plot[Sin[x],{x,0,2Pi},PlotStyle->{RGBColor[1,0,0]}]
Plot[Sin[x^2],{x,-2Pi,2Pi},PlotStyle{GrayLevel[0.5],Dashing[{0.02,0,01}]}]
如果用Plot画两个或多个函数的图形,可以用PlotStyle为每一条曲线设定一个不同的方式。
这时必须把描述一条曲线的项放在一个表里作为PlotStyle的值的一个子表。
下面的例子说明这个问题。
.
Plot[{Sin[x],Cos[x]},{x,0,4Pi},
PlotStyle->{{GrayLevel[0.5]},
{RGBColor[1,0,0],Thickness[0.02]}}]
注意,要做出彩色图形,Plot的可选项ColorOutput必须具有值True(这样正是系统的初始默认值)。
ColorOutput也是一个第一类可选项,它说明是否在屏幕上显示出彩色图形(表达式)的颜色。
由于在没有特别说明的时候,Plot使用黑白方式构造图形的表示。
这时及使可选项RGBColor也不可能显示出彩色图形来。
例如:
a=Plot[{Sin[x],Cos[x]},{x,0,4Pi},ColorOutputFalse,PlotStyle{{GrayLevel[0.5]},{RGBColor[1,0,0],Thickness[0.02]}}]
3.1.3Plot做图原理和一些问题
函数Plot还有一些其他可选项,由于篇幅关系,这里就不逐一介绍了。
现在把函数Plot作图的实际过程介绍一下:
1.Plot首先以给定的表达式作为计算的对象,根据给定的自变量取值范围选取样点,计算函数在这些点的值。
计算时根据函数的情况和几个可选项(PlotPoints,MaxBend,PlotDivision)的值调整对样点的选取,当函数的值变化剧烈时Plot自动增加取点的个数。
2.第一步计算得到了一组函数点(一组函数对)。
Plot由这些值根据可选项PlotStyle构造出一条(或几条,如果函数多余一个的话)作为图形基本要素的曲线,并进而构造出一个图形表达式。
3.调用$DisplayFunction(调用系统内部定义的显示程序)把作好的图根据与这个图有关的第一类可选项的值投射到计算机屏幕上。
其中可能加上了坐标、标注等。
在第3.7和3.8节里还将更仔细地讨论一些有关问题。
现在要特别说明前面将的第一类和第二类可选项的差别。
第二类可选项是构造基本图素时使用的,Plot根据这些可选项的值把基本图素计算和构造出来,作为图形的基本部分,图形的这些部分不因如何显示而改变。
第一类可选项用于说明如何把一个(构造好的)图形显示出来,包括在显示时给基本图形附加上什么辅助性的东西。
这两类可选项有根本性的差别。
如果在计算中生成了一个函数表达式的表,然后想作出表里所有函数的图形,按一般的方法用Plot就会出问题。
输入:
fun=Table[Normal[Series[Sin[x],{x,0,n}]],{n,1,9,2}]
Plot[fun,{x,-5,5}]
这时系统将显示许多错误信息,说明它在x的各个点无法由fun计算出的实数值。
实际上,函数Plot总是把写在它的第一个参数位置的东西直接作为被作图的表达式,它用变量的一系列值代入这个表达式并希望能求出实数值来。
如果写在这里的是一个表,Plot就会逐个地处理表里的表达式。
但是,在上面的例子里写在Plot的第一个参数位置的是fun,所以Plot就把它当作表达式的求值,自然出现了问题(在这里写%也会出现同样的情况)。
实际上,这时读者希望Plot把fun的值(就是由前面的计算得到的表达式的表)作为作图对象,上面的描述里没有说明这个问题。
要做到这件事,必须采用下面的写法:
Plot[Evaluate[fun],{x,-5,5}]
这里的Evaluate[fun]表示要求Plot把fun的值而不是fun本身作为作图的对象,意思是先把fun的值求出来,然后作它的图形。
如果需要先作一定的计算,求出表达式的结果再作图,这个计算表达式写在Plot的第一个参数位置时都必须加上函数Evaluate。
现在读者可以试一试下面的式子,考虑它为什么出错以及如何更正:
Plot[D[Sin[x]/(1+x),{x,3}],{x,1,5}]
也可以这样:
hanshu=D[Sin[x]/(1+x),{x,3}];
Plot[hanshu,{x,1,5}]
总结一下使用Plot时对它的参数的处理方式:
如果在Plot的第一个参数的位置写的直接就是被作图的函数表达式,实际上是希望系统先做计算,然后作出计算结果的图形,那么一定要用函数Evaluate告诉系统先进行这个计算。
3.2图形的重新显示、组合、存储和输出
函数Plot在作完一个图形时也得到一个结果,这个结果就是表示被生成的图形的一个表达式。
但是,从计算机的屏幕上用户只看到在相应的Out[xx]=后面显示“—Graphics—”。
原因是得到的图形表达式都非常长而且复杂,系统认为用户一般对于这个表达式的内容并不关心,而显示整个表达式既费时间又干扰用户,所以就不整个显示它了。
如果用户真的关心这个表达式的内容,则可以用特殊的方法看到它,这一点在第3.7节讨论。
但是有一点应当强调,虽然系统没有整个地显示图形的表达式,它还是正常地把这个表达式记录下来了。
这个表达式可以象任何其他计算结果表达式一样使用。
例如可以用它重新显示这个图形。
经过一段时间的运算,用户可能已经用Plot(或别的函数,后面将进一步讨论)生成了一些图形。
这些图形有的可能不令人满意。
如果图形的基本部分不合适,那么只能重新构造图形。
如果图形的基本部分是合适的,仅仅显示形式不如能人意,如比例不合适,范围不合适(取得太大等),坐标不合适等等,那么可以设法重新显示这个图形,使之满足需要。
重新显示一个图形不必重新计算与图形有关的市政数值,因此可能使系统(和用户)节省一些时间。
函数Show的功能是显示已经做好的图形,使用时可以重新指定一些可选项,使图形按照需要的方式显示出来。
例如作图:
g1=Plot[Sin[x],{x,-Pi,PI}]
如果现在希望用实际的比例尺重作这个图,那么输入:
Show[g1,AspectRatio->Automatic]
或者想把图形的坐标轴换一个位置,则输入:
Show[g1,Axes->{-Pi,-1}]
用函数Show重新显示二维图形时,前面讲到Polt的第一类可选项都可以使用。
其原因非常清楚,重新显示时,只能重新选择图形的显示方式,不能改变图形的基本构成。
前面已经讲过,函数Show还可以把几个做好的图形显示在一起。
用户可以用这样的方式实现图形的组合。
在组合图形时同样可以使用上述的第一类可选项,对图形的显示发生2加以调整。
例如;
这里有一个问题要注意,如果原来的图形有色彩,现在也希望用彩色显示,那么应当给出可选项PlotColor->True。
函数Show对于这个参数的默认值是False,因此如果不给一个
True值,显示的图形就会没有色彩。
人们有时想把一些已经做好的图形存储起来。
这样,将来需要使用这个图形时就比较简单,而且可以节约时间。
存储Mathematica生成的图形的基本方法有两种,第一中是以表达式的形式存储,再一种是以Postscript语言的形式存储。
Postscript语言是一种描述图形的计算机语言(一种页面描述语言),一个图形在Postscript里是一个文本形式的计算机文件。
许多计算机上都有处理Postscript语言的系统程序,例如有的程序可以把这种语言描述的图形显示在计算机银幕,上或把它们从各种打印机打印出来。
实际上,Mathematica显示图形时也是通过图形Postscript形式。
它先把做好的图形表达式转换成一个描述图形Postscript临时性文件,放在计算机磁盘里,然后调用一个Postscript处理程序把这个图形显示到计算机银幕上。
系统函数Display实现把一个内部的图形表达式转换成Postscript形式并且存入一个文件的工作。
这个函数的使用形式是:
Display[“文件描述”,图形]
其中的第一个参数说明把图形存入哪个文件。
文件的描述可以直接写文件名,也可以带路径描述部分。
应当注意,文件的描述应当用双引号括起来。
用函数Display存储的可以在Mathematica系统外显示和打印,可以作为普通的文件复制。
这种图形的使用不依赖于Mathematica系统。
只要一台计算机上有Postscript处理程序,就可以使用这样生成的图形文件,显示或打印。
现在,Postscript实际上已经成为一种图形描述的标准,有的激光打印机本身就带有Postscript解释器,可以直接接受和打印Postscript文件。
再者,显示这种图形文件的速度很快,不需要花费大量的处理时间。
这些都是把图形用Postscript形式存储的优点。
存储图形的另一种方式是直接存储图形表达式。
第二章里已经讲过如何把一个表达式的值存入文件,图形表达式也是一种表达式,所以也能够用这种存入文件里。
用Mathematica表达式形式存储的图形只能用这个系统处理。
这种存储方法的优点是再次使用时仍然可以利用系统的各种功能,对存储的图形做各种处理。
而用Postscript形式存储的图形则很难改动,而且几乎无法做逻辑结构的改动。
3.3二维参数图形
Mathematica还能方便地画参数形式表示的一元函数的平面图形。
使用的函数是ParametricPlot。
它的使用形式也有两种:
ParametrcPlot[{x(t),y(t)},{t,下限,上限},可选项]
ParametricPlot[{{x1(t),y1(t)},{x2(t),y2(t)},…},
{t,下限,上限},可先项]
其中t可以是任一个变量,x(t),y(t),xi(t),yi(t)等是包含t的表达式,它们的意义对于了解数学的人是很清楚的。
第一个形式用于作一个函数的图形,第二个形式用于在一张图上作多于一个函数的图形。
ParametricPlot接受与Plot一样的可选顶,其作用也一样。
例如:
ParametricPlot[{Sin[x],Cos[x],{x,0,2,Pi}]
对这个表达式,系统作出一个圆,可以从屏幕坐标系的标度上看清这一点。
但是在屏幕的显示是一个椭圆,因为默认的显示比例是黄金分割。
为了显示出一个圆,应当要求ParametricPlot用实际比例作图:
ParametricPlot[{Sin[x],Cos[x]},
{x,0,2Pi},AspectRatio-->Automatic]
用ParametricPlot可以作出许多有趣的图形,例如:
ParametricPlot[{Sin[2t},Cos[3t]},
{t,0,2Pi},AspectRatio-->Automatic]
例1:
作出圆:
的图形.
解:
设x=cost,y=sint;所以得:
ParametricPlot[{Cos[t],Sin[t]},{t,0,2Pi}]
图形的比例似乎不协调,这是由于系统默认的高宽比为黄金分割比;需加以改变:
Show[%,AspectRatio->Automatic]
例2:
作摆线的图形:
;
解:
使用语句为:
ParametricPlot[{3(u-Sin[u]),3(1-Cos[u])},{u,0,3Pi},AspectRatio->Automatic]
例3:
作星形线的图形:
解:
参数方程为:
x=8cos3u,y=8sin3u;u∈[0,2π]
ParametricPlot[{8Cos[u]^3,8Sin[u]^3},{u,0,2Pi},AspectRatio->Automatic]
例4:
作心形线的图形:
解:
从给出的函数看为极坐标的形式;它可以化成参数形式的函数,再利用参数作图,先就一般形式分析:
.
所以只需语句:
ParametricPlot[{r[t]Cos[t],r[t]Sin[t]},{t,t1,t2},AspectRatio->Automatic];
对
作如下语句:
r[t_]:
=6*(1+Cos[t]);
Para
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 Mathematica 图形