自从 Mathematica 第一版以来所进行的不兼容的变化
介绍
Mathematica 每一期新版本都包含许多新增功能. 但是,从一开始就进行的精心设计使所有版本之间几乎完全兼容. 例如,几乎所有为 Mathematica 第1版编写的程序都应该能够在第7版中无需改变直接运行,尽管它的运行速度往往会大大加快.
但是,一个不可避免的问题是,如果一个程序使用的名称以大写字母开头,那么很可能会出现这样一种情况:继程序写成之后添加到 Mathematica 中的内置函数的名称,与在先前写出来的程序中使用的名称冲突.
另外,为了保持 Mathematica 整体上的一致性,在早期版本中存在的一些函数逐渐被弃用——先是在文档中不再出现,然后是在使用时产生警告信息. 此外,在一些极个别情况下,必须对一些和以前版本不兼容的个别函数做一些改变.
第1版与第2版之间
添加了 260 个新的内置对象,其中一些名称可能与已经使用的名称冲突.
Accumulate 已被 FoldList 取代;添加了 Fold.
Condition (
) 现在可以用于单个模式以及完全规则中,并且不在默认设置时进行计算.
Release 的功能被拆分为 Evaluate 和 ReleaseHold.
Compose 已被 Composition 取代.
Debug 已被 Trace 及其相关函数取代.
Power 不在自动进行诸如 Sqrt[x^2]→x 等的变换.
如果 Limit 遇到一个未知函数,它在默认设置时保持不被计算.
Mod 现在只处理数字;PolynomialMod 处理多项式.
CellArray 已被 Raster 和 RasterArray 取代.
FontForm 取一种略有不同的字体设定形式.
Framed 已被 Frame 及其相关选项取代.
ContourLevels 和 ContourSpacing 已被 Contours 取代.
Plot3Matrix 已被 ViewCenter 和 ViewVertical 取代.
FromASCII 和 ToASCII 已分别被 FromCharacterCode 和 ToCharacterCode 取代.
Alias 已被 $PreRead 取代.
ResetMedium 已被纳入 SetOptions;$$Media 已被 Streams 取代.
StartProcess 已被 Install 和 MathLink 取代.
第2版与第3版之间
添加了 259 个新的内置对象,其中一些名称可能与已经使用的名称冲突.
现在 N[expr, n] 总是尽可能给出 n 位精度,而不是简单的从 n 位精度开始计算.
所有只包含数值函数和数值常量的表达式,只要它们包含任何近似数字,就转换为近似数字形式.
涉及不用求值的精确数字的任何表达式现在都进行求值计算. 例如:Floor[(7/3)^20].
现在 Plus 和 Times 在应用用户自定义的规则前应用内置规则,因此进行类似
的定义不再可能.
和
的运算符优先级已被变至低于
. 因而,以前在 InputForm 中如
的表达式现在必须写成
. V2Get[file] 将使用旧的运算符优先级读取一个文件.
现在是一个用于生成上标的运算符. 对于控制字符的输入,必须使用原八进制代码而不是
.
在 Mathematica 笔记本中,一些内置 Mathematica 函数现在默认使用特殊字符输出. 例如:在 StandardForm 中,
的输出是
.
如果不使用选项设置 GenerateConditions->False,更复杂的定积分现在生成显式的 If 结构.
HeldPart[expr, i, j, ...] 已被 Extract[expr, {i, j, ...}, Hold] 取代.
Literal[pattern] 已被 HoldPattern[pattern] 替代. Verbatim[pattern] 被引入. 如 DownValues 等的函数将其返回结果包装在 HoldPattern 中,而不是 Literal.
ReplaceHeldPart[expr, new, pos] 已被 ReplacePart[expr, Hold[new], pos, 1] 取代.
ToHeldExpression[expr] 已被 ToExpression[expr, form, Hold] 取代.
Trig 作为代数运算函数的一个选项,已被显式函数 TrigExpand、TrigFactor 和 TrigReduce 取代.
AlgebraicRules 已被 PolynomialReduce 取代.
选项 LegendreType 已被 LegendreP 和 LegendreQ 的一个另外的可选自变量取代.
WeierstrassP[u, {g2, g3}] 现在在一个列表中取
和
.
和
现在仅有内置数值,但这些数值可以处理所有可能的 Mathematica 字符.
不再被支持.
任意精度近似实数现默认在 InputForm 中以 digits`prec 形式给出. 这个行为由 $NumberMarks 控制.
大的近似实数现默认在 InputForm 中以
形式给出.
HomeDirectory[ ] 已被 $HomeDirectory 替代.
Dump 已被 DumpSave 取代.
和
现已弃用,因为所有计算机系统的支持管道和链接.
LinkOpen 已被 LinkCreate、LinkConnect 和 LinkLaunch 所取代.
Subscripted 已被 RowBox、SubscriptBox 等取代.
Subscript 和 Superscript 现在代表的是完整的带有下标和上标的量,而不仅仅是下标和上标.
FontForm 和 DefaultFont 已被 StyleForm 和 TextStyle 所取代.
在笔记本的前端,进行的变化包括:
笔记本的文件格式已经完全改变,以支持新的笔记本功能.
笔记本文件现在默认给出 .nb 而不是 .ma 的扩展名,.mb 文件现在是多余的.
前端会自动要求将用户命令打开的任何旧的笔记本进行转换.
内核命令 NotebookConvert 可用于笔记本文件格式由第2版至第3版的转换.
输入单元格的默认格式类型现在是 StandardForm 而不是 InputForm.
样式表的组织以及一些默认样式的设置已被更改.
一些菜单命令的热键已经被重新组织.
第3版与第4版之间
添加了61个新的内置对象,其中一些名称可能与已经使用的名称冲突.
N[0] 现在产生机器精度零而不是精确零.
已被 AbsoluteOptions 取代,生成的结果的形式与 Options 相同.
Element[x, y] 或者
现有内置计算规则.
符号 I 和 E 的 StandardForm 输出分别为
(\[ImaginaryI]) 和
(\[ExponentialE]).
CompiledFunction 中添加了一个新的第二参数,以便更容易操作和编译函数的组成.
第4版与第5版之间
添加了44个全新的内置对象,其中一些名称可能与已经使用的名称冲突.
Precision 和 Accuracy 现在以数值形式返回精确的不确定性的度量,而不仅仅是整数位的估计.
Precision 现在对机器数值返回符号 MachinePrecision,而不是数字值 $MachinePrecision.
N[expr, MachinePrecision] 现在用于机器数值的数值计算;N[expr, $MachinePrecision] 生成任意精度数值.
ConstrainedMin 和 ConstrainedMax 已被 Minimize、Maximize、NMinimize 和 NMaximize 取代.
SingularValues 已被 SingularValueList 和 SingularValueDecomposition 所取代. SingularValueDecomposition 使用一个不同的更完整的定义.
LUBackSubstitution 已被更一般的 LinearSolveFunction 的用法取代.
FindRoot[f, {x, {x0, x1}}] 现在用于指定 x 的一个开始向量值,而不是一对数值. FindMinimum 也同样如此.
DSolveConstants 已被更一般的选项 GeneratedParameters 所取代.
TensorRank 已被 ArrayDepth 所取代.
$TopDirectory 已被 $InstallationDirectory 和 $BaseDirectory 所取代.
当与不同的计算机系统连接时,MathLink LinkProtocol 选项的默认设置现在是
而不是
.
第5版与第6版之间
图形功能已显著改变. 为了兼容的目的,使用
恢复 Mathematica 5 的图形功能. 使用
恢复 Mathematica 6 的图形功能.
添加了超过800个的全新内置对象,其中一些名称可能与已经使用的名称冲突.
Graphics 或 Graphics3D 对象的输出形式现在是生成的图形而不是形如
的一个输出.
$DisplayFunction 现在的设置为 Identity,因此当评估一个图形时,默认时无附加效果产生. 为了产生类似于第5版的输出中的附加效果,可以使用 Print 函数来输出图形.
图形的默认字体由 Courier 变为 Times.
GraphicsArray 已被 GraphicsGrid 和 Grid 取代.
AspectRatio 在 Graphics 和 ParametricPlot 中的 AspectRatio 的默认设置现在是 Automatic.
Plot 的 PlotDivision 选项已被 MaxRecursion 取代.
ListPlot 的 PlotJoined 选项已被 ListLinePlot 取代.
Plot3D[{f, s}, {x, xmin, xmax}, {y, ymin, ymax}]:阴影设定 s 被 MeshShading 取代.
选项 HiddenSurface->False 已被 PlotStyle -> FaceForm[ ] 取代.
ContourGraphics 已被 ListContourPlot 和 GraphicsComplex 取代.
DensityGraphics 已被 ListDensityPlot 和 GraphicsComplex 取代.
Plot3D 和其它三维绘图函数现在发射 GraphicsComplex 而不是 Polygon 基元的一个原列表.
ListPlot 现在将一列点集合到一个单一的 Point 基元.
MeshRange 选项已被 DataRange 取代.
DensityPlot 和 ListDensityPlot 现在默认进行网格的绘制.
ListPlot3D[array, shades] 已被 MeshShading 取代.
三维图形中的 SurfaceColor 现在被显式颜色和指令Specularity 和 Glow 所取代.
Lighting 现在支持一种用于指定包括聚光灯,点光源,定向照明及照明环境等不同种类光源的新的语法.
不再支持图形基元
.
不再支持选项 RenderAll 和 PolygonIntersections.
Rectangle[{xmin, ymin}, {xmax, ymax}, graphics] 已被 Inset 取代.
StyleForm 和 StylePrint 已被 Style 取代.
TextStyle 已被一般的机制 BaseStyle 取代.
SequenceForm 已被 Row 取代.
第5版与第6版之间
添加了超过400个的全新内置对象,其中一些名称可能与已经使用的名称冲突.
对于光栅图像格式,现在 Import[file] 返回 Image[...] 而不是 Graphics[Raster[...]],以便利用新的图像处理功能. 使用Import[file, "Graphics"] 来将文件 file 以 Graphics 表达式形式导出.
对于更精确的表达式结构,Import[file, "XML"] 和 Export[file, "XML"] 现在总是只导入和导出符号式 XML 表达式. Import["file.xml"] 仍将像在 Mathematica 6 中一样自动确定 XML 格式.
为了允许更多不同的交互式控制,选项
已改名为 TooltipDelay,用法不变.