常用记号和表示惯例

函数名

内置函数的名称遵循一些规则指南.

  • 名称包括完整的英文单词,或者数学简写. 这里使用的是美式拼写法.
  • 每个单词的首字母大写.
  • 名称以 结尾的函数通常表示"提问",返回值或者是 True 或者是 False.
  • 以人名命名的数学函数在 Mathematica 中的函数名形式为 PersonSymbol.

函数变量

内置函数所作用的主表达式或对象经常作为函数的第一个变量. 辅助参数作为接下来的变量出现.

下面是一些例外情况:

  • 在函数如 MapApply 中,所要应用的函数在它应用的表达式之前出现.
  • 在作用域结构如 ModuleFunction 中,局部变量和参数名在函数体之前出现.
    • 在函数如 WriteExport 中,文件名在写入的对象之前给出.

    对于数学函数,在标准数学记号中作为下标的变量在上标之前给出.

选项

一些内置函数可以采用选项(options). 每个选项具有一个名称,可以表示为一个符号,或者在一些情况下可以表示为一个字符串. 通过给出形如 或者 的规则,设置选项. 这样的规则必须出现在函数的其它变量之后. 可以按任何顺序给出不同选项的规则. 如果用户不能对特定选项明确地给出规则,则使用该选项的默认设置.

Options[f]给出所有与 f 相关联的选项的默认值
Options[expr]给出在特定表达式中设置的选项
Options[expr,name]给出表达式中选项 name 的设置
AbsoluteOptions[expr,name]给出 name 的绝对设置,即使实际设置为 Automatic
SetOptions[f,name->value,...]对与 f 相关联的选项设置默认规则
CurrentValue[name]给出前端选项 name 的选项设置;可以在赋值操作的左端使用来设置选项

选项上的操作.

元素编号

n元素 n (从 开始)
-n从尾部开始的元素 n
0头部

元素编号.

序列规格

All所有元素
None没有元素
n元素 n
-n最后 n 个元素
{n}只包含元素 n
{m,n}元素 mn(闭区间)
{m,n,s}元素 mn,步长为 s

子序列.

序列规格 对应于元素 m、...,直至不大于 n 的最大元素.

序列规格在函数 DropOrderingStringDropStringTakeTakeThread 中使用.

层规格

nn
InfinityInfinity
{n}只包含层 n
{n1,n2}
Heads->True包含表达式的头部
Heads->False不包含表达式的头部

层规格.

在表达式中,对应于非负整数 n 的层被定义为由 n 个索引指定的部分组成. 一个负的层数 -n 表示深度为 n 的表达式的所有部分. 表达式的深度,Depth[expr],是用来指明任意部分的索引的最大值,再加1. 除非设置选项 Heads->True,否则层的计数不包括表达式的头部. 层 是整个表达式. 层 包含所有没有子部分的符号和其它对象.

指定的层的范围包括所有树中的既不在层 之上,也不在层 之下的部分. 不必具有相同的符号. 因此,例如, 指明了表达式树中出现在最高层以下,但叶子层以上的子表达式.

函数如 ApplyCasesCountFreeQLevelMapMapIndexedPositionReplaceScan 使用层规格. 然而,注意,对于所有这些函数,默认层规格并不相同.

迭代器

{imax}迭代
{i,imax}i 从 1 到 ,步长为1
{i,imin,imax}i,步长为1
{i,imin,imax,di}i,步长为 di
{i,list}i 采取 list 中的连续值
{i,imin,imax},{j,jmin,jmax},... i,并且对每个 ,等等.

迭代器表示法.

迭代器在函数如 SumTableDoRange 中使用.

迭代参数 di 不必是整数. 变量 i 被赋于一系列值,这些值从 开始,以步长 di 递增,当 i 的下一个值比 大时停止. 迭代参数可以是任意的符号表达式,只要 是一个数.

当使用一些迭代变量时,后面的迭代变量的极限可以依赖于前面的迭代变量的值.

变量 可以是任意符号表达式;它不必是单个字符. 的值自动设为迭代函数的局部值. 这可以通过对迭代函数中包含 Block 结构进行封装来实现.

关于计算迭代函数的过程,请参见 "计算".

作用域结构

Function[{x,...},body]局部参数
lhs->rhs lhs:>rhs局部模式名
lhs=rhs lhs:=rhs局部模式名
With[{x=x0,...},body]局部常数
Module[{x,...},body]局部变量
Block[{x,...},body]全局变量的局部值
DynamicModule[{x,...},body]Dynamic 接口中的局部变量

Mathematica 中的作用域结构. 语法上第一组作用域变量上的函数.

作用域结构允许特定符号的名称或值是局部的.

一些作用域在语法范围内缩小作用域,这意味着特定变量或模式的字母实例被合适的值替代. 当要求局部变量名时,名称形如 xxx 的符号被重命名为 . 当计算嵌套作用域结构时,在内层作用域结构中自动产生新的符号,以避免与外层作用域结构的符号冲突.

当采用一个变换规则或定义的时候,ReplaceAll)实际上用来代替出现在右边的模式名. 然而,当必要的时候,将产生新符号用来表示在右边出现的作用域结构的其它对象.

每次计算的时候,Module 产生形如 具有唯一名称的符号,用来替代所有在函数体中出现的局部变量.

Block 局部化全局变量的值. 即使当变量没有在函数体内明确出现时,在依赖全局变量的函数块中进行的任何计算都将使用在局部指定的值. Block 体可能也会对全局变量进行修改,但是任何修改都只持续到 Block 结束执行的时候.

在一个笔记本中,DynamicModuleDynamicModule 输出的每个实例局部化它的变量. 这意味着每个使用复制和粘贴创建的 DynamicModule 输出的每个拷贝都将使用它自己的局部变量.

表达式的顺序

表达式的正则排序自动使用属性 Orderless,并且在函数如 Sort 中符合以下规则:

  • 整数、有理数和近似实数根据它们的数值值排序.
  • 复数根据它们的实部排序,在两个复数的实部相等的情况下,可以根据虚部的绝对值排序.
  • 符号根据名称排序,在两个符号相等的情况下,可以根据上下文排序.
  • 表达式经常是以深度优先方式比较它们的各部分来排序的. 较短的表达式排在前面.
  • 幂和积使用特殊方法处理,它们是根据多项式中的项进行排序的.
    • 字符串根据它们在字典中的顺序排序,其中大写字母排在小写字母之后.

    普通字母排在最前面,接着依次是脚本(script)、哥特式(Gothic)、双式(double-struck)、希腊文和希伯来文. 数学操作符以优先级的递减顺序出现.

数学函数

Mathematica 内置的数学函数如 Log[x]BesselJ[n, x] 具有大量共同的特点.

  • 它们具有属性 Listable,因此它们自动逐项作用于任何作为变量出现的列表.
  • 它们具有属性 NumericFunction,因此当它们的变量是数值的时候,假定它们给出数值值.
  • 在特殊情况下,它们给出精确的关于整数、有理数和代数表达式的结果.
  • 除了变量总是整数的函数,在 Mathematica 中的数学函数计算可以达到任意数值精度,可以以任意复数作为变量. 如果一个函数对特定变量集合未定义,在这种情况下它以符号形式返回.
  • 数值计算的结果精度不比在变量精度的基础上判断的结果高. 因此 N[Gamma[27/10], 100] 产生高精度的结果,但是 N[Gamma[2.7], 100] 不能.
  • 在可能的情况下,可以关于其它内置函数,计算内置数学函数的符号式导数、积分和级数展开.

数学常数

Mathematica 内置的数学常数如 EPi 具有下面特性:

  • 它们本身不具有值.
  • 它们可表示为任意精度的数值值.
  • NumericQ 中和其它地方作为数值量处理.
  • 它们具有属性 Constant,因此在导数中作为常数处理.

保护

Mathematica 允许用户进行赋值,来重载 Mathematica 内置对象的标准操作和含意.

为了尽量避免出现错误的赋值,大多数 Mathematica 内置对象具有属性 Protected. 如果用户想要对一个内置对象进行赋值,必须首先删除该属性. 可以调用函数 Unprotect 来实现该功能.

存在一些基本的 Mathematica 对象,用户绝对不可以自己对其赋值. 这些对象具有属性 Locked,以及Protected. Locked 属性防止用户对任何属性进行修改,并且也防止删除 Protected 属性.

缩写的字符串模式

函数如 StringMatchQNamesRemove 允许用户给出缩写的字符串模式(abbreviated string patterns),以及由 StringExpression 指定的完全字符串模式. 缩写的字符串模式可以包含某些元字符(metacharacters),元字符可以表示普通字符组成的序列.

*零个或多个字符
@除了大写字母外的,一个或多个字符
\\*,等等.字母 ,等等

在缩写字符串模式中使用的元字符.

New to Mathematica? Find your learning path »
Have a question? Ask support »