第2讲 在Mathematica中作图

   一个较强的符号计算系统均有很好的绘图功能,Mathematica也不例外,Mathematica 拥有非常强大的绘图功能。并且提供了一大批基本数学函数的图形,利用这些提供的函数,用户可以方便地组合成所需要的、复杂的函数图形,所有这些都使得 Mathematica系统在处理和解决数学问题和一般的计算问题中表现得非常突出。

2.1 基本图形与图形处理的原理
    首先画出一个周期正弦函数sin(x)的图象:

In[1]:=Plot[Sin[x],
{x, 0, 2Pi}]
     
    Out[1]=-Graphics-

其次画一个含有奇异点的函数曲线,Mathematica会选取适当的比例:

In[2]:=Plot[Tan[x],
{x, -3, 3}]
     
    Out[2]=-Graphics-

Mathematica可以将一组函数的曲线画在一张图上:

In[3]:=Plot[{Sin[x],
Sin[2x], Sin[3x]}, {x, 0, 2Pi}]
    
    Out[3]=-Graphics-

当Mathematica去画函数f的图象时,为了得到光滑的曲线,系统需要计算许多点的函数值。
Mathematica中存在两种可能的方法解决这个问题。第一种方法是先设法求出函数f关于x的大致的表达式,然后按顺序计算出相应的x处的函数表达式
的值。另一方法就是,先写出各点的x值,然后顺序算出相应点x的函数值f。

如果输入Plot[Sin[x],
{x, 0,
2Pi}],Mathematica使用了上面所述的第二种方法。使用这种方法的好处在于,Mathematica只需要去计算对应的x的函数值,这样它就不需要去关注当x为符号的时候所对应的函数表达式。

在有些情况下,在画出该函数的曲线之前,计算出函数f的表达式还是非常有用的,一个典型的实例是,当f
是生成一个函数表的命令,此时系统先要生成一个表,然后计算函数值。可用绘图格式Plot[Evaluate[f],{x,xmin,xmax}]来实
现。下面的例子就使用了这样的方法来绘制Bessel函数Jn(x)在n从1~4的函数图形。

In[4]:=Plot[Evaluate[Table[BesselJ[n,
x], {n, 4}]], {x, 0, 11}]
    
    Out[4]=-Graphics-

对Mathematica系统的图形输出原理,各种不同的计算机和不同接口具有不同的形式。使用Mathematica系统来进行图形的输出大致可以分为三步进行:


执行绘图命令比如Plot得到Mathematica系统的原始图形,这些原始图形中包括图形的基本结构如Point、Line、Polygon和基本图形提示比如RGBColor,Thickness等。


将图形变换成与设备无关的标准图形,使用PostScript页描述形成这种图形。


采用PostScript表示图形,并在读者所在的装置上画出。

2.2函数作图
2.2.1一元显函数(二维)作图
    (1)
Plot函数的介绍
    若函数以显函数形式给出,即y=f(x)形式,可用Plot函数来进行作图。其格式为:

格式一:Plot[函数f,
{x, xmin, xmax}, 选项]
    功能:在区间{xmin,xmax}上,按选项的要求画出函数f的图形。

格式二:Plot[{函数f1,
函数f2,…}, {x, xmin, xmax}, 选项]
    功能:在区间{xmin,xmax}上,按选项的要求画出函数f1、函数f2…等图形。即同时画出几个函数的图形.

Mathematica绘图时允许用户设置选项值对绘制图形的细节提出各种要求。例如,要求取消坐标
轴,给图形加框线等,每个选项都有一个确定的名子,以“选项名->选项值”的形式放在Plot中最右边位置,一次可设置多个选项,选项依次排列,以
逗号相隔,若不设置选项,系统取各选项的默认值。下例是带有多个选项的绘图命令:

(2)
用选项对图形进行修饰
    ①
修饰曲线的样式(第一类选择项)
    Mathematica所提供的第一类选项用来控制图形的生成过程、控制图形元素的构造,这是比较重要的一类选项,其选项名只有一个PlotStyle,它的用法见表2-1。

表2-1
选项PlotStyle选项的取值

    注意表2-1中PlotStyle选项的取值可以有若干项,这若干项构成一个表,表中的内容分别用来控制线条的粗细、虚实和色彩,若Plot同时绘出几个函数的图形,则PlotStyle取值的表中应是若干个子表,每一个控制相应的图形。

其中正弦函数Sin(2x)以灰度0.05和虚实结合的线绘出,而余弦函数的图形以红色加粗的方式绘出,在PlotStyle取值的表中,第一个子表的内容控制第一个函数的图形,第二个子表的内容控制第二个函数的图形。

PlotStyle取值是由四项内容所组成的表,但仅有前两项起作用分别控制第一个和第二个函数的图形。


修饰整幅图的外观(第二类选择项)
    Mathematica可以通过选项改变图形的显示比例、为图形加背景、加网格、控制作图的区域及图形是否显示。有关的选项及其取值见表2-2:

表2-2
修饰图形外观的选项

    ③
对坐标轴外观进行修饰(第二类选择项)
    下面介绍的选项是针对坐标轴而言的,它可以确定是否显示坐标轴,坐标原点的位置,坐标轴上的刻度等。

表2-3 修饰坐标轴外观的选项

    (3)
重画和组合图形
    Mathematica系统对于图形的处理也是把它当成一个对象来处理的,其实这个对象也是表示生成图
形的一个表达式,所以对于画出的图形,我们可以实行再显示和组合等操作。从一般的输出图形结果中,我们看到的表达
式"Out[n]=-Graphics-",其实它是一个极为复杂的图形表达式的缩写,系统认为我们不必关心这样的表达式,所以以一个缩写来表示。虽然如
此,但系统内部还是记录了这一表达式。对于图形的重画和组合的操作,主要用到Show和GraphicsArray函数,具体用法见表2-4。

表2-4
Show和GraphicsArray函数的使用

2.2.2二维参数作图
    在很多数学问题中,人们往往无法显示地表达一个函数。对于二元或三元函数,可以引入另外一个变量,其他
变量都可以表示成该变量的表达式,这样无论对数学计算、分析和作图都有不可比拟的优点。在Mathematica中,提供了绘制这样的参数方程的函数。对
于含参数的函数绘图大致也可以分为两大类,就是二维参数作图和三维参数作图。

下面是二维参数作图常用的格式,它们的区别一个作一条曲线,一个作一组曲线:

格式一: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,t0,t1}, 选项]
    功能:画一组参数曲线。

2.2.3平面数据点作图
    有时需要绘出给定数据的图形,Mathematica也有直接绘出数据的图形命令,还可以使用Fortran或C等其他高级语言生成数据点作图。表2-5是数据点作图的函数及使用:

2-5
平面数据点作图

    注意:二维数据点的表示形式,平面上每一个点用表{xi,yi}表示,数据点再次构成表的集合。

2.2.4平面图形元素作图
    我们在前面曾经提及图形的基本元素的概念,在Mathematica的二维图形中,基本元素有点、线、矩阵以及多边形和圆等等,所有的二维图形都可以由这些基本的图形元素构成。表2-6列出基本的二维图形元素:

表2-6
二维图形元素

    使用图形元素可做出复杂的图形。先用Graphics[图形元素]做出平面图形表达式,再用Show[图形表达式]显示完整的图形。注意若图形元素有多个,需用{}构成表。

2.3二元(三维)函数作图
    2.3.1
二元(三维)显函数作图
    前面我们讲述了一元(二维)函数作图,同样对于二元(三维)也有相应的作图方式,也分显函数作图、参数方程作图和数据点作图。下面是二元显函数的作图格式:

格式:Plot3D[f[x,y],
{x,x0,x1},{y,y0,y1}, 选项]
    作用:在区域上,画出空间曲面f(x,y) 。
    在上述例子中,并未使用该函数的可选项设置,此时系统仍然使用它默认选项进行绘图,其实在Mathematica的三维绘图中,完全可以像二维绘图时一样,控制绘图的多种选项,与二维相比三维绘图还可设置图形的色彩光照等效果,产生出栩栩如生的图形。

(1)
修饰曲面的外观
    表2-7例出了常用的修饰曲面外观的选项:

表2-7
修饰曲面外观的选项

    增加函数的采样点数,可使函数显示更为精确,但同时也降低了绘图的速度。Mathematica在绘图的过程中,会自动对奇异点附近作取舍,可用PlotRange不断调整作图的区域,以达到所需的目的。

Mesh和Shading及Light均用来对三维图形的表面进行处理。Mathematica系统已经对三维图的表面效果进行了自动处理,而且处理得不错,一般情况下不用作处理,你也可以对参数进行设置,达到自已理想的效果。

(2)
修饰整幅图的外观
    除了修饰曲面的外观,还可修饰整幅图的外观,表2-8列出了常用的选项:

表2-8
修饰图形外观的选项

    这里所介绍的选项与二维作图有关的选项用法基本上一样,读者可自行加以自己动手。

(3)
修改视点
    在三维问题中,坐标系统与二维坐标系统有相似的地方,那就是关于其原点坐标与刻度坐标的区别。在二维问
题中用一个矩形来规定图形的范围,在三维问题中则使用一个长方体的盒子来限定绘图的空间。三维图形从不同的视点来观看会有“横看成岭侧成峰”的效果,所以
对于三维图形有一个视点的选择问题。可通过选项ViewPoint来设置。

表2-9
常用视点

    同样的图形,从不同的角度,可以得到不同的效果,下面的例子是将本节第一个图形换了一个角度得到的效果:

2.3.2三维参数方程作图
    与二维作图一样,三维参数作图函数的使用方法与二维函数参数作图非常类似。根据三维参数方程参量是一个还是二个,可以作出空间曲线或曲面。

格式一:ParametricPlot3D[{x,y,z},
{u,u0,u1},{v,v0,v1},选项]
    功能:画三维参数空间曲面
    格式二:ParametricPlot3D[{x,y,z},
{t,t0,t1},选项]
    功能:画三维参数空间曲线,
2.3.3等值线图和密度图
    在Mathematica系统中,用于绘制等值线和密度图的函数分别为ContourPlot和DensityPlot。等值线图形的一个最易理解的例子是地理上等高线的例子,等值线实际上是把物体表面上位于相同高度上的点连在一起。下面是两个函数使用的格式:

格式:ContourPlot[f[x,y],{x,xmin,xmax},{y,ymin,ymax},选项]

功能:作二元函数f(x,y)
在区域上的等值线图。
    格式:DensityPlot[f[x,y],{x,xmin,xmax},{y,ymin,ymax},选项]

功能:作二元函数f(x,y)在区域上的密度图。

它们使用时还可利用选项进行设置,表2-10列出了常用的选项:

表2-10
等值线图与密度图的选项

2.3.4三维图形元素画图
    同二维图形一样,三维图形在Mathematica系统中仍然由基本的图形元素构成,我们可以利用这些基本图形元素构建自已的图形。

使用三维图形元素作图步骤:先用Graphics3D[图形元素]做出图形表达式,再用Show[图形表达式]的形式显示完整的图形。

表2-11列出了常用的三维图形元素:

表2-11
三维图形元素

2.4其他特殊图形
    在进行图形的处理中有很多的作图要求,比如绘制条形图、对数图、极坐标图以及一系列的动态图形。在
Mathematica中,对于各种图形都由相应的函数来进行绘制。在Mathematica中,一些具有共同特征的图形被集成在Mathematica
的标准软件包中。可打开"Help"菜单的Add-Ones选项卡的Standard
Packages中的Graphics,可以看到更详细的作图函数说明和更多的实例。

Mathematica带有一个附加的图形函数软件包"Graphics"。
该软件包中所包含的主要作图函数如表2-13:
    表2-143
特殊图形作图函数

Mathematica作图的更多相关文章

  1. linux 下 TeXmacs 作 Mathematica 10 的前端

    TeXmacs可以作很多种数学软件的前端,比如maxima,octave,R等.甚至还可以作mathematica的前端.TeXmacs的mathematica 插件比较老,默认条件下无法运行math ...

  2. Mathematica多元隐函数作图

    例: ContourPlot3D[ 1/x + 1/y + 1/z == 1/10, {x, 最小值, 最大值}, {y, 最小值, 最大值}, {z, 最小值, 最大值}]

  3. Mathematica

    Mathematica是一款科学计算软件,很好地结合了数值和符号计算引擎.图形系统.编程语言.文本系统.和与其他应用程序的高级连接.很多功能在相应领域内处于世界领先地位,它也是使用最广泛的数学软件之一 ...

  4. 杂项-数学软件:Mathematica

    ylbtech-杂项-数学软件:Mathematica Mathematica是一款科学计算软件,很好地结合了数值和符号计算引擎.图形系统.编程语言.文本系统.和与其他应用程序的高级连接.很多功能在相 ...

  5. 经典Mathematica函数大全

    转自:http://blog.renren.com/share/238323208/8426343822  Mathmatic 函数表  一.运算符及特殊符号 Line1; 执行Line,不显示结果  ...

  6. 基于 Mathematica 的机器人仿真环境(机械臂篇)[转]

    完美的教程,没有之一,收藏学习. 目的 本文手把手教你在 Mathematica 软件中搭建机器人的仿真环境,具体包括以下内容(所使用的版本是 Mathematica 11.1,更早的版本可能缺少某些 ...

  7. 利用数学软件Mathematica的三维图像进行建模

    前言 最近在使用Mathematica进行二元函数的图像绘制,在导出图像选项中看到了obj,maya等三维格式.其实很早之前我就有过这样的想法,但之前使用的是matlab作图,无法导出三维格式.那么废 ...

  8. 关于Mathematica 的cdf 文件的嵌入应用

    // // '); cdf.embed('http://files.cnblogs.com/Leonhard-E/AreaOfANormalDistribution.cdf', 635, 913); ...

  9. excel 作图中次横坐标及次纵坐标的调试,以及excel自定义轴标签的步骤方法

    在工作中除了要做一些常用的图表之外,不时还会有一切奇怪图表的制作需求. 今天的内容主要记录的是如何对excle图表的次横坐标及次纵坐标进行调试,以及如何自定义调整轴标签 首先看下如何做次纵坐标,工作中 ...

随机推荐

  1. perf原理再看

    vim ./arch/x86/kernel/hw_breakpoint.c perf如何控制采样的频率 perf采样不同的事件,得到的不是一样 cycles: 向PMU中增加不同的函数,增加不同 使用 ...

  2. js & disabled mouse right button menus

    js & disabled mouse right button menus 网页可以屏蔽 F12 https://www.cnblogs.com/Marydon20170307/p/9122 ...

  3. 使用ExecutorService实现线程池

    ExecutorService是java提供的用于管理线程池的类. 线程池的作用: - 控制线程数量 - 重用线程 当一个程序中创建了许多线程,并在任务结束后销毁,会给系统带来过度消耗资源,以及过度切 ...

  4. C#中的SubString()的用法

    先看语法: String.SubString(int index,int length)     index:开始位置,从0开始       length:你要取的子字符串的长度 例子: using ...

  5. [CQOI2012]局部极小值

    题目链接 注意到\(4\times 7\)的矩阵的局部极小值最多只有8个,可以状压. 设\(f[i][sta]\)表示从小到大填数,当前填到\(i\),极小值的填充状态为\(sta\)的方案数. 考虑 ...

  6. hdu 6200 mustedge mustedge(并查集+树状数组 或者 LCT 缩点)

    hdu 6200 mustedge mustedge(并查集+树状数组 或者 LCT 缩点) 题意: 给一张无向连通图,有两种操作 1 u v 加一条边(u,v) 2 u v 计算u到v路径上桥的个数 ...

  7. POJ3660:Cow Contest(Floyd传递闭包)

    Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16941   Accepted: 9447 题目链接 ...

  8. 7月24号day16总结

    一开始显示出现问题,js路径不能应用,因为用的是springMVC框架书写,所以有路径的保护和静态引用地址时需要注意的地方 今天进行了最后项目的优化,包括map清洗数据部分的代码和echarts显示的 ...

  9. js和jquery修改背景颜色的区别

    html: <HTML> <head> <meta http-equiv="content-type" content="text/html ...

  10. Spring - IoC(10): 生命周期

    Spring 容器可以管理 singleton 作用域 Bean 的生命周期,容器能够跟踪 Bean 实例的创建.销毁.管理 Bean 生命周期行为主要有两个时机: 注入 Bean 的依赖关系之后 即 ...