张量
张量是向量和矩阵的推广. 在
Mathematica 中,张量被表示为嵌套到一定次数的列表的集合,嵌套次数称为张量的秩.
| 0 阶 | 标量 |
| 1 阶 | 向量 |
| 2 阶 | 矩阵 |
| k 阶 | k 阶张量 |
嵌套列表的解释.
阶为
k 的张量实际上是一个
k 维值表. 张量的阶为
k 的条件是能够将表中的元素列为一个
k 维立方阵列,没有空洞和鼓包.
指明张量中特定元素的指标相应于立方体的坐标. 张量的维数相应于立方体的边长.
产生
k 阶张量的一个简单方法是给出
k 个变量的函数的值表. 在物理学中出现的张量具有指出空间或时空方向的指标. 注意,在
Mathematica 中,没有共变和协变张量指标的概念. 用户须使用度量张量来建立这些概念.
| Table[f,{i1,n1},{i2,n2},...,{ik,nk}] |
| 建立一个 × ×...× 张量,其元素是 f 的值 |
| Array[a,{n1,n2,...,nk}] | 建立一个 × ×...× 张量其元素通过把 a 用于每个指标集合给出 |
| ArrayQ[t,n] | 检验是否 t 是一个 n 阶张量 |
| Dimensions[t] | 给出张量的维数的列表 |
| ArrayDepth[t] | 求张量的阶 |
| MatrixForm[t] | 以两维阵列的形式排列张量 t 的元素 |
建立和检验张量结构的函数.
| Out[1]= |  |
| Out[2]= |  |
Out[3]//MatrixForm= |
| |  |
| Out[4]= |  |
这是张量的

元素.
| Out[5]= |  |
| Out[6]= |  |
张量的阶等于指定每个元素所需的指标数. 通过使用较少的指标数可以取出子张量.
| Transpose[t] | 张量的前两个指标的转置 |
| Transpose[t,{p1,p2,...}] | 转置张量,使第 k 个指标变成为第 个 |
| Tr[t,f] | 构造张量 t 的广义迹 |
| Outer[f,t1,t2] | 构造张量 和 在"乘法算子" f 下的广义外积 |
| t1.t2 | 构造 和 的点积( 的最后一个指标和 的第一个指标被删去) |
| Inner[f,t1,t2,g] | 构造广义内积,带有"乘法算子" f 和"加法算子" g |
张量运算.
可以把
k 阶张量看作有
k 个插入指标的"位置". 使用
Transpose 是重排这些位置的有效方法. 如果把张量的元素看作构成
k 维立方体,那么
Transpose 就是旋转(也可能是反射)该立方体.
在最一般的情形,
Transpose 允许任意重排张量指标. 函数
Transpose
给出一个新的张量

,使得

的值由

给定.
如果最初有一个

×

×
...×

张量,使用
Transpose 后,将得到一个

×

×
...×

张量.
| Out[7]= |  |
| Out[8]= |  |
原张量中的元素

变成转置张量的元素

.
| Out[9]= |  |
| Out[10]= |  |
这里转置

的前两层.
| Out[11]= |  |
| Out[12]= |  |
如果一个张量的不同层次具有同样的长度,则可以使用
Transpose 压缩不同的层次.
| Out[13]= |  |
| Out[14]= |  |
| Out[15]= |  |
| Out[16]= |  |
| Out[17]= |  |
外积以及其推广是一种用低阶张量构造高阶张量的方法. 外积有时称为直接积,张量积或 Kronecker 积.
根据结构的观点,
Outer
给出的张量有一个
u 插入到
t 的每个元素的"位置"的结构. 所得结构中的元素通过使用函数
f 组合
t 和
u 的元素来获得.
这里给出两个向量的"外积

". 结果是一个矩阵.
| Out[18]= |  |
对长度为3和长度为2的两个向量"外积

",得到 3×2 矩阵.
| Out[19]= |  |
2×2 矩阵和长度为3的向量的"外积

"是 2×2×3 张量.
| Out[20]= |  |
| Out[21]= |  |

×

×
...×

张量和

×

×
...×

张量的广义外积是

×
...×

×

×
...×

张量. 如果两个张量的阶为
r 和
s,其广义外积的阶为

.
用指标来描述,对两个张量

和

应用
Outer 的结果是张量

,其元素是

.
在标准张量计算中,在
Outer 中最常用的函数
f 是
Times,相应于标准外积.
然而,在组合运算中,把
f 取为
List 常常是方便的. 使用
Outer,可以得到一个张量元素与其它张量的元素的所有可能的组合.
构造
Outer
时,把
u 插入到
t 的每一点. 构造
Inner
时,组合并删去
t 的最后一维和
u 的第一维,即取

×

×
...×

张量和

×

×
...×

张量(其中

),得到一个

×

×
...×

×

×
...×

张量.
最简单的例子是向量的内积. 对两个长度相同的向量使用
Inner,将得到一个标量.
Inner
是普通标量积的推广,其中
f 起着乘法的作用,
g 起着加法的作用.
| Out[22]= |  |
| Out[23]= |  |
| Out[24]= |  |
| Out[25]= |  |
| Out[26]= |  |
| Out[27]= |  |
可以把
Inner 看作是对一个张量的最后一个指标和另一张量的第一个指标进行"压缩". 如果想压缩其它指标对,可以先把该指标对转置到第一或最后的位置,然后使用
Inner,再把结果转置回去.
在张量的许多应用中,需要添加正负号实现反对称. 函数
Signature
给出交换的正负号,常常用于这种目的.
| Outer[f,t1,t2,...] | 通过组合 最低层元素构造广义外积 |
| Outer[f,t1,t2,...,n] | 将第 n 层子列表作为分离元素处理 |
| Outer[f,t1,t2,...,n1,n2,...] | 将 中的第 层子列表作为分离元素 |
| Inner[f,t1,t2,g] | 使用 的最低层元素,构造广义内积 |
| Inner[f,t1,t2,g,n] | 将第一个张量的指标 n 与第二个张量的第一个指标合并压缩 |
将张量的某个列表作为分离的元素处理.
| Out[28]= |  |
| Out[29]= |  |
展平矩阵块.
这里是一个矩阵块(一个矩阵的矩阵,这可以看成是齐边地放在一个大的矩阵中的一些块).
Out[30]//TableForm= |
| |  |
Out[31]//TableForm= |
| |  |