基本对象
表达式
表达式(Expressions)是 Mathematica 中数据的主要类型.
表达式可以写成
的形式. 一般说来,对象 h 被认为是表达式的头部.
被称为表达式的元素. 头部和元素本身可能也是表达式.
表达式的各组成部分可以使用数字索引来指代. 头部索引为0;元素
索引为 i. Part[expr, i] 或
使用索引 i 给出 expr 的部. 负索引从尾部计算.
Part[expr, i1, i2, ...]、
或者 Extract[expr, {i1, i2, ...}] 通过连续提取索引为
的子表达式的各组成部分,找到 expr 的相应的块. 如果用户把表达式当作树来考虑,索引就指明了当用户从树的根节点开始往下搜索的时候,在每个节点应该选择哪个分支.
通过给出由刚好 n 个索引组成的序列来指定的表达式的组成部分被定义为位于表达式中的第 n 层. 用户可以使用层来决定函数如 Map 的应用域. 第0层对应于整个表达式.
定义表达式的深度为用来指定表达式各部的最大索引数,并加上1. 负的层数 -n 指的是表达式的各部分都具有深度 n.
符号
符号(Symbols)是 Mathematica 中的基本已命名对象.
符号名必须是由字母、类字母形式和数字组成的序列,但开头不可以使用数字. 在 Mathematica 中,总是区分大写字母和小写字母的.
重要的是所有系统定义的符号名称只包含英文字母、数字和
. 例外情况是
、
、
、
和
.
系统定义的符号名称按照惯例包含一个或更多个完整英文单词. 每个单词的第一个字母大写,并且这些单词被组合在一起.
一旦创建,Mathematica 中的普通字符便持续存在,除非使用 Remove 明确删除它. 然而,在作用域结构如 Module 中自动创建的符号具有属性 Temporary,该属性指明一旦它们不在任何表达式中出现时,将自动删除它们.
当创建一个新符号的时候,Mathematica 首先把任何赋给 $NewSymbol 的值应用于作为符号名的字符串,以及创建符号所在的上下文.
如果打开消息 General::newsym,那么 Mathematica 报告创建的新符号. 默认情况下,该消息被关闭. 不报告在作用域结构中自动创建的符号.
上下文
在 Mathematica 中的任何符号的全名包括两个部分:上下文和短名. 全名以
的形式给出. 上下文
可以包括与短名相同的字符. 它可能包含任何数目的上下文标记字符
,并且必须使用上下文标记结束.
在一个 Mathematica 会话的任何位置,有一个现有上下文 $Context 和包含上下文列表的上下文搜索路径 $ContextPath. 在现有上下文或上下文搜索路径的上下文中的符号,可以通过只给出它们的短名来指定,如果它们没有被具有相同短名的其它符号所屏蔽的话.
| name | 搜索 $ContextPath,接着是 $Context;如果必要的话,在 $Context 中创建 |
| `name | 只搜索 $Context ;如果必要的话,在该位置创建 |
| context`name | 只搜索 context;如果必要的话,在该位置创建 |
| `context`name | 只搜索 |
使用 Mathematica 程序包,按照惯例,它与名称对应于程序包名的上下文相联系. 程序包通常使用 BeginPackage 和 EndPackage 在合适的上下文中定义对象,并且把上下文加入到全局 $ContextPath 中. 对于任何在程序包中创建、但是在上下文搜索路径中被现存符号所"屏蔽"的符号,EndPackage 显示警告信息.
上下文仅当必须在符号显示的时候用来指定该符号时,才被包含在符号的显示形式中.
原子对象
Mathematica 中的所有表达式最终是由小数目的基本或原子对象类型组成.
这些对象具有可以用来作为类型"标签"的符号的头部. 这些对象包含"原始数据",通常只能由面向特定对象类型的函数访问. 可以使用 Head 提取对象的头部,但是用户不可以直接提取它的其它各组成部分.
| Symbol | 符号(使用 SymbolName 获取名称) |
| String | 字符字符串 |
| Integer | 整数(使用 IntegerDigits 获取数字) |
| Real | 近似实数(使用 RealDigits 获取数字) |
| Rational | 有理数(使用 Numerator 和 Denominator 获取各部) |
| Complex | 复数(使用 Re 和 Im 获取各部) |
Mathematica 中的原子对象具有深度0,并且在使用 AtomQ 测试时,产生 True.
数字
Mathematica 中的所有数字可以包含任意数目的数位. 当可能的情况下,Mathematica 对整数和有理数,以及实部和虚部都是整数或有理数的复数,进行计算.
在 Mathematica 中有两种近似实数的类型:任意精度(arbitrary precision)和机器精度(machine precision). 在处理任意精度数时,Mathematica 试图修改精度,以确保所有数位都是准确的.
使用机器精度数,所有的计算在相同的固定精度下实现,所以一些数位可能不是准确的.
除非特别指明,Mathematica 把所有位于 $MinMachineNumber 和 $MaxMachineNumber 之间、并且输入小于 $MachinePrecision 数位的近似实数作为机器精度数处理.
在 InputForm 中,Mathematica 使用 $MachinePrecision 数位显示机器精度数,除了当尾随数字为零的情况.
在 Mathematica 的任意实现中,数的幅度(除了0)必须位于 $MinNumber 和 $MaxNumber 之间. 幅度在此之外的数字由 Underflow[] 和 Overflow[] 表示.
字符字符串
Mathematica 中的字符字符串可以包含任意字符序列. 它们以形式
输入.
单个字符可以是可显示的ASCII (字符码在32和126之间),或者一般说来,任意8位或16位字符. Mathematica 对16位字符使用Unicode字符编码.
