【数学】张量通俗入门

2023-10-26

1 张量

张量就是一组有序数。

或者说,张量就是一组有序数的表现方式,或者说是记号。比如向量是一种表现方式,矩阵是一种表现方式,张量同样也是一种表现方式。它本质就是一组有序的数字而已。

值得指出的是,张量是比向量和矩阵更高级的记号。它向下包含了向量和矩阵。凡是向量和矩阵能表示的,张量都能更简洁地表示。

在很多地方,我们不提是几阶张量,就默认是2阶。

(在数学上,张量也是一种向量,也是一种矩阵。通俗来讲,其实三者都是一回事,只不过记号不同,是西红柿和番茄的区别。)

1.1 为什么张量记号简便

为什么要用张量记号,说起来,无非是简便。当然,熟悉了之后,还可以将知识抽象到更高层次。

为什么会简便?

比如应力记号 σ \sigma σ
如果写成矩阵就是
σ = ( σ x x σ x y σ x z σ y x σ y y σ y z σ z x σ z y σ z z ) \mathbf{\sigma} = \begin{pmatrix} \sigma_{xx} & \sigma_{xy} &\sigma_{xz} \\ \sigma_{yx} & \sigma_{yy} &\sigma_{yz} \\ \sigma_{zx} & \sigma_{zy} &\sigma_{zz} \\ \end{pmatrix} σ= σxxσyxσzxσxyσyyσzyσxzσyzσzz
在这里插入图片描述
(图片引自wiki)

这样写有两个缺点:

  1. x y z这样的下标记号太费字母了。
    假如有四个分量呢?取mnkl?五个呢?六个呢?那26个英文字母都取完了。
  2. 写成矩阵太占地方了,一下子就要写9个分量。

第一点好办,无非是符号问题,干脆全换成1,2,3。反正数字用不完。
于是就变成了
σ = ( σ 11 σ 12 σ 13 σ 21 σ 22 σ 23 σ 31 σ 32 σ 33 ) \mathbf{\sigma} = \begin{pmatrix} \sigma_{11} & \sigma_{12} &\sigma_{13} \\ \sigma_{21} & \sigma_{22} &\sigma_{23} \\ \sigma_{31} & \sigma_{32} &\sigma_{33} \\ \end{pmatrix} σ= σ11σ21σ31σ12σ22σ32σ13σ23σ33

第二点怎么办呢?
我们发现,无非是123这三个数在变来变去,干脆直接用i=1,2,3和j=1,2,3来代替吧!

于是就写成了
σ i j \sigma_{ij} σij
其中i=1,2,3;j=1,2,3

于是只用这一个记号,就代表了9个分量的矩阵。

1.1.1 用张量记号简写求偏导

额外要提醒的一点是:张量也可以简写求偏导操作。
例如
( ∂ ϕ ∂ x , ∂ ϕ ∂ y , ∂ ϕ ∂ z ) (\frac{\partial \phi }{\partial x} ,\frac{\partial \phi }{\partial y} ,\frac{\partial \phi }{\partial z} ) (xϕ,yϕ,zϕ)
就可以简写为
∂ ϕ ∂ x i \frac{\partial \phi}{\partial x_i} xiϕ
我们还可以更简洁一点,连求导符号和分式也省去了,写成
ϕ , i \phi_{,i} ϕ,i
你看,就一个逗号,就代表了对三个分量分别求偏导。

1.2 张量的阶

标量是0阶张量
矢量是1阶张量
2阶张量可用矩阵表示
此外,常见的还有4阶张量,也可用矩阵表示

什么是张量的阶呢?就是自由下标的个数。

例如
x i x_i xi是1阶张量,因为 i = 1 , 2 , 3 i=1,2,3 i=1,2,3, 它就有3个分量。(在力学中,它可以代表位置)
σ i j \sigma_{ij} σij是2阶张量,因为 i = 1 , 2 , 3 ; j = 1 , 2 , 3 i=1,2,3; j=1,2,3 i=1,2,3;j=1,2,3 ,它就有9个分量。(在力学中,它可以代表应力)
c m n k l c_{mnkl} cmnkl是4阶张量,因为 m = 1 , 2 , 3 ; n = 1 , 2 , 3 ; k = 1 , 2 , 3 ; l = 1 , 2 , 3 m=1,2,3; n=1,2,3; k=1,2,3; l=1,2,3 m=1,2,3;n=1,2,3;k=1,2,3;l=1,2,3,它就有3*3*3*3=81个分量。(在力学中,它可以代表刚度矩阵)

像这种能够自由变换的下标,叫自由下标。它不一定是1,2,3;也可以是x、y、z。只是一种用来区分不同的记号罢了。

1.3 张量的运算规则

我们为标量定义了加、减、乘、除,这是标量的运算规则。
向量也有加、减、乘(有许多种乘),也是其运算规则。
矩阵也有加、减、乘和取逆,也是其运算规则。
张量同理。

张量有加、减、乘(有许多种乘)。

乘有三种:

  1. 点乘
  2. 叉乘
  3. 并乘
1.3.1 爱因斯坦求和约定与哑标

刚才说了自由下标,与之对应的,就是哑标。哑标是会被消掉的。
爱因斯坦在推导相对论的时候,为了记号方便,就发明了张量表示法。他又发现经常会有相同下标求和的情况发生,于是规定:凡是在一项内有相同下标出现的,一律默认求和。

写起来,就是这样
x i y i = x 1 y 1 + x 2 y 2 + x 3 y 3 x_iy_i=x_1y_1+x_2y_2+x_3y_3 xiyi=x1y1+x2y2+x3y3

其实说来,就是省略了一个求和的 Σ \Sigma Σ
如果不省略,就是
∑ i x i y i = x 1 y 1 + x 2 y 2 + x 3 y 3 \sum_i x_iy_i=x_1y_1+x_2y_2+x_3y_3 ixiyi=x1y1+x2y2+x3y3

1.3.2 张量的加减

加减很简单,对应的分量加减即可。
例如
x i + y i = ( x 1 + y 1 x 2 + y 2 x 3 + y 3 ) x_i +y_i= \begin{pmatrix} x_1+y_1\\ x_2+y_2\\ x_3+y_3 \end{pmatrix} xi+yi= x1+y1x2+y2x3+y3

1.3.3 张量的点乘(dot product)

严谨的说法叫缩并。

首先说明,
点乘是降阶的。
这一点要牢记。

那么降低多少呢?
假如a有4阶,b有2阶,那么a点乘b得到的就是4-2=2阶
假如a有2阶,b有1阶,那么a点乘b得到的就是2-1=1阶(矩阵乘向量)
假如a有2阶,b有2阶,那么a点乘b得到的就是2-2=0阶(矩阵乘矩阵)
假如a有1阶,b有1阶,那么a点乘b得到的就是1-1=0阶(向量乘向量)

所以我们还明白了:点乘结果的阶数就是阶数大的减去阶数小的。

例如
c m n k l ϵ k l = σ m n c_{mnkl} \epsilon_{kl}=\sigma_{mn} cmnklϵkl=σmn

你看,左边的kl重复了,所以满足爱因斯坦求和约定,自动求和,变成了哑标,即
∑ k ∑ l c m n k l ϵ k l \sum_k\sum_lc_{mnkl} \epsilon_{kl} klcmnklϵkl
这个求和以后,就只剩下两个自由下标了。所以就变成了2阶张量。

1.3.3.2 二阶张量的双点积

向量(也就是一阶张量)的点乘都写成一个点的点积。
而二阶张量的点乘都写成两个点的点积。如
a : b \mathbf{a}:\mathbf{b} a:b
这里我没有写下标。a和b都代表二阶张量。假如写上下标
a i j b i j a_{ij}b_{ij} aijbij
你就会发现,ij都是哑标,直接就加没了。所以两个2阶张量点乘的结果是0阶张量,即一个数,或者说是标量。

为什么要写两个点呢?这是因为有两个下标被爱因斯坦求和约定给求和了,同时它又是两个二阶的张量相乘,所以就写成两个点

双点积应该很常见,因为它其实就是两个矩阵对应分量一对一的相乘。
假如写成矩阵形式的话,

a : b = ( a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ) : ( b 11 b 12 b 13 b 21 b 22 b 23 b 31 b 32 b 33 ) = a 11 b 11 + a 12 b 12 + a 13 b 13 + a 21 b 21 + a 22 b 22 + a 23 b 23 + a 31 b 31 + a 32 b 32 + a 33 b 33 = = ∑ i j a i j b i j \begin{matrix} a:b & = \\ \begin{pmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33} \end{pmatrix}: \begin{pmatrix} b_{11} & b_{12} & b_{13} \\ b_{21} & b_{22} & b_{23}\\ b_{31} & b_{32} & b_{33} \end{pmatrix} =\\ a_{11}b_{11} + a_{12}b_{12} + a_{13}b_{13} + a_{21}b_{21} + a_{22}b_{22} + a_{23}b_{23} + a_{31}b_{31} + a_{32}b_{32} + a_{33}b_{33} \end{matrix}=\\ =\sum_{ij}{a_{ij}b_{ij}} a:b a11a21a31a12a22a32a13a23a33 : b11b21b31b12b22b32b13b23b33 =a11b11+a12b12+a13b13+a21b21+a22b22+a23b23+a31b31+a32b32+a33b33===ijaijbij

1.3.4 并乘(dyadic product)/张量积(tensor product)

并乘是升阶的。

那么升多少呢?

并乘结果的阶数就是阶数大的加上阶数小的。
这里和点乘就只有一字之差:“加”和“减”。

a ⊗ b = a i b j \mathbf{a} \otimes \mathbf{b} =a_ib_j ab=aibj
并乘除了写圈圈里面一个叉子,还可以什么都不写,就紧贴着。
a b = a i b j \mathbf{a}\mathbf{b} =a_ib_j ab=aibj

可以想象,i和j都是自由下标,结果为2阶张量,所以这其实是9个分量
( a 1 a 2 a 3 ) ( b 1 b 2 b 3 ) = ( a 1 b 1 a 1 b 2 a 1 b 3 a 2 b 1 a 2 b 2 a 2 b 3 a 3 b 1 a 3 b 2 a 3 b 3 ) \left(\begin{array}{l} a_{1} \\ a_{2} \\ a_{3} \end{array}\right)\left(\begin{array}{lll} b_{1} & b_{2} & b_{3} \end{array}\right)=\left(\begin{array}{lll} a_{1} b_{1} & a_{1} b_{2} & a_{1} b_{3} \\ a_{2} b_{1} & a_{2} b_{2} & a_{2} b_{3} \\ a_{3} b_{1} & a_{3} b_{2} & a_{3} b_{3} \end{array}\right) a1a2a3 (b1b2b3)= a1b1a2b1a3b1a1b2a2b2a3b2a1b3a2b3a3b3

向量并乘又被称为外积(outer product)(与内积相对应)
矩阵并乘又被称为克罗内克积(kronecker product)
张量的并乘又被称为直积(direct product),或者就叫张量积(tensor product)

(PS 张量积这种说法比较普遍)
(待补充)

1.3.5 张量的叉乘(cross product)

叉乘是不升不降的。
例如向量的叉乘
e j × e k = e i j k e i \mathbf{e_j}\times \mathbf{e_k}=e_{ijk}\mathbf{e_i} ej×ek=eijkei

a × b = e i j k a j b k e i \mathbf{a}\times \mathbf{b}=e_{ijk}a_j b_k \mathbf{e_i} a×b=eijkajbkei

这里 e i \mathbf{e_i} ei代表坐标轴的单位向量
e i j k e_{ijk} eijk叫做置换符号(又叫Racci符号)
e i j k = { 0 i j k 中有两个相同 1 i j k 正序轮换:例如 123 , 231 , 312 − 1 i j k 逆序轮换:例如 132 , 321 , 213 e_{i j k}=\left\{\begin{array}{c} 0 & ijk中有两个相同\\ 1 & ijk正序轮换:例如 123,231,312\\ -1 & ijk逆序轮换: 例如132,321,213 \end{array}\right. eijk= 011ijk中有两个相同ijk正序轮换:例如123231312ijk逆序轮换:例如132321213

1.4 克罗内克三角(Kronecker delta)

克罗内克三角(Kronecker delta),或者叫克罗内克函数

它是一个二阶张量
δ i j = { 0  if  i ≠ j 1  if  i = j \delta_{i j}= \begin{cases}0 & \text { if } i \neq j \\ 1 & \text { if } i=j\end{cases} δij={01 if i=j if i=j

可见,它其实就是单位阵。

可用克罗内克三角来化简许多运算

他有一条很好的性质,那就是他能换下标

比如
a i δ i j = a j a_{i}\delta_{ij}=a_j aiδij=aj
其实这个换了相当于没换,因为只有一个下标。假如有两个,那就有区别了
a i b j δ i j = a i b i a_{i}b_j\delta_{ij}=a_ib_i aibjδij=aibi
可见后面那个 δ \delta δ把b的下标j换成了下标i

1.5 张量的几何解释:线性变换

(此节内容来自A brief on tensor analysis)

我们都知道,矩阵的几何含义是对任意向量v进行线性变换。

张量其实也是一种线性变换(我们这里指的是二阶张量)。

说矩阵是一种线性变换,这种说法其实不严谨。应该说:矩阵左乘是一种线性变化,即

A v ∀ v \mathbf{A}\mathbf{v} \hspace{0.2in} \forall \mathbf{v} Avv
(这里黑体,表示用的是向量记号,没有用张量记号;张量记号是不需要黑体的,只需要加下标)
向量 v \mathbf{v} v的任意性表示了主体在于A

同理,不能说二阶张量本身是一种线性变换,而应该说:二阶张量(点乘/叉乘/并乘)分别是一种线性变化。即
p ⋅ v ∀ v \mathbf{p}\cdot \mathbf{v} \hspace{0.2in} \forall \mathbf{v} pvv
p × v ∀ v \mathbf{p}\times \mathbf{v} \hspace{0.2in} \forall \mathbf{v} p×vv
p v ∀ v \mathbf{p} \mathbf{v} \hspace{0.2in} \forall \mathbf{v} pvv

(待完善)

1.6 张量的梯度散度和旋度

1.6.1 散度

对一个二阶张量来说
∇ ⋅ σ = [ ∂ ∂ x ∂ ∂ y ∂ ∂ z ] [ σ x x σ x y σ x z σ y x σ y y σ y z σ z x σ z y σ z z ] = [ ∂ σ x x ∂ x + ∂ σ y x ∂ y + ∂ σ z x ∂ z ∂ σ x y ∂ x + ∂ σ y y ∂ y + ∂ σ z y ∂ z ∂ σ x z ∂ x + ∂ σ y z ∂ y + ∂ σ z z ∂ z ] T = ∂ σ j i ∂ x j \begin{matrix} \nabla \cdot \boldsymbol{\sigma}&\\ =\left[\begin{array}{lll} \frac{\partial}{\partial x} & \frac{\partial}{\partial y} & \frac{\partial}{\partial z} \end{array}\right]\left[\begin{array}{ccc} \sigma_{x x} & \sigma_{x y} & \sigma_{x z} \\ \sigma_{y x} & \sigma_{y y} & \sigma_{y z} \\ \sigma_{z x} & \sigma_{z y} & \sigma_{z z} \end{array}\right]&\\ =\left[\begin{array}{c} \frac{\partial \sigma_{x x}}{\partial x}+\frac{\partial \sigma_{y x}}{\partial y}+\frac{\partial \sigma_{z x}}{\partial z} \\ \frac{\partial \sigma_{x y}}{\partial x}+\frac{\partial \sigma_{y y}}{\partial y}+\frac{\partial \sigma_{z y}}{\partial z} \\ \frac{\partial \sigma_{x z}}{\partial x}+\frac{\partial \sigma_{y z}}{\partial y}+\frac{\partial \sigma_{z z}}{\partial z} \end{array}\right]^T&\\ =\frac{\partial \sigma_{j i}}{\partial x_{j}} \end{matrix} σ=[xyz] σxxσyxσzxσxyσyyσzyσxzσyzσzz = xσxx+yσyx+zσzxxσxy+yσyy+zσzyxσxz+yσyz+zσzz T=xjσji

故张量的散度就是一个向量(一阶张量)。

1.6.2 梯度

1.7 张量的高斯定理


参考

  1. https://zhuanlan.zhihu.com/p/139105732
  2. https://zhuanlan.zhihu.com/p/62612523
  3. https://zhuanlan.zhihu.com/p/56850779
  4. http://fdjpkc.fudan.edu.cn/d201354/15048/list.htm
  5. https://www.jianshu.com/p/b7391573a9fd
  6. https://zhuanlan.zhihu.com/p/83101486
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【数学】张量通俗入门 的相关文章

随机推荐

  • c++整型与二进制的相互转化

    include
  • 打印100-200之间的所有素数。 (C语言)

    分析 判断是否是素数 1 能被1和自身整除的数是素数 2 试除法 代码 include
  • 服务器选择多大的带宽比较合适,如果遇到攻击了该怎么办

    首先要了解带宽是什么 对于服务器来说带宽分两种 上行带宽和下行带宽 上行带宽 是上传数据的速度 用户要获取到服务器程序搭建里面的内容就需要用到上传带宽 就好比搭建了网站别人要加载内容 服务器首先就要先把内容上传到用户的本地上 而这个步骤就需
  • 杰卡德系数(Jaccard Index)

    杰卡德系数 Jaccard Index 杰卡德系数 又称为杰卡德相似系数 用于比较两个样本之间的差异性和相似性 杰卡德系数越高 则两个样本相似度越高 定义 有两个集合A和B 那么这两个集合的杰卡德系数为A和B的交集除以A和B的并集 当集合A
  • VMware虚拟机启动错误(正在被占用、内部错误)等问题

    参考 VMware虚拟机启动错误 正在被占用 内部错误 等问题 作者 扫地僧 发布时间 2019 09 20 15 02 55 网址 https blog csdn net weixin 42119153 article details 1
  • Spring cache 注解详解

    spring cache注解的使用 CacheConfig 类级别的缓存注解 允许共享缓存名称 Caching 将多种缓存操作分组 Cacheable 触发缓存入口 CacahePut 更新缓存 CacheEvict 触发移除缓存 最常用的
  • 浅谈vscode以及解决官网下载速度慢的问题

    浅谈vscode VSCode 全称 Visual Studio Code 是一款由微软开发且跨平台的免费源代码编辑器 该软件支持语法高亮 代码自动补全 又称 IntelliSense 代码重构 查看定义功能 并且内置了命令行工具和 Git
  • DB-Engines 2017年8月数据库排名发布 总体走势复归平稳

    近日 DB Engines发布了2017年8月数据库排名 数据库排行 经历过此前一系列暴跌暴涨 8月数据库得分走势渐趋平缓 前二十名涨跌幅皆控制在十分以内 前十席位本月无变动 为首的三巨头自不必提 Oracle MySQL Microsof
  • Impala常见错误

    1 尽量少使用 invalidate metadata 尽量用REFRESH TABLE NAME 2 set APPX COUNT DISTINCT true 与 ndv 函数是一样的 都只是估值 Impala SQL 不支持的一个查询中
  • 计算机组成原理——存储系统の选择题整理

    存储器概述 1 存储器存取周期是指 A 存储器的读出时间 B 存储器的写入时间 C 存储器进行连续读或写操作所允许的最短时间间隔 D 存储器进行一次读或写操作所需的平均时间 解析 选C 存取周期是存储器进行连续读或写操作所允许的最短时间间隔
  • LeetCode 最热 100 题, 搜索旋转排序数组,search in rotated sorted array

    作者 Linux猿 简介 CSDN博客专家 华为云享专家 Linux C C 面试 刷题 算法尽管咨询我 关注我 有问题私聊 关注专栏 LeetCode面试必备100题 优质好文持续更新中 欢迎小伙伴们点赞 收藏 留言 目录 一 题目描述
  • 自然语言编程的尝试

    班上有30个学生 甲叫肖鹤云 乙叫李诗情 显示甲 乙的名字 这段代码明显不能运行 需要做一些修改 分配30个学生类至班 甲为班 0 乙为班 1 甲的名字为肖鹤云 乙的名字为李诗情 显示甲的名字 乙的名字 进一步转化 学生类 班 学生类 ma
  • 杨辉三角c语言实现

    在屏幕上打印杨辉三角 include
  • Spring Boot实战.Spring Boot核心原理剖析

    在上节中我们通过了一个小的入门案例已经看到了Spring Boot的强大和简单之处 本章将详细介绍Spring Boot的核心注解 基本配置和运行机制 笔者一直认为 精通一个技术一定要深入了解这个技术帮助我们做了哪些动作 深入理解它底层的运
  • VMware Workstation(虚拟机)安装英文版XP系统

    因需要写英文文档 里面的截图也要求全英文 所以打算在在原有的XP系统上安装一虚拟机 再在虚拟机里安装英文版XP系统 在此记录一下自己的安装过程 虚拟机的安装过程在此略过 首先要下载英文版XP操作系统iso镜像 本人下载网址 http www
  • pytorch实现简易回归问题

    代码部分 import torch from torch autograd import Variable import torch nn as nn import torch nn functional as F import torch
  • Excel中如何获取汉字拼音首字母

    Excel中如何获取汉字拼音首字母 在工作中 为了方便查询 排序或者编码 需要生成汉字内容信息的首字母 如果信息很多的话 一个个录入是一件很麻烦的事情 下面给大家介绍一个便捷的方法 轻松获取汉字拼音首字母信息 最终效果如下 工具 原料 Mi
  • vue3中使用webcamjs拍照

    最近做了一个考试答题的pc端vue3项目 就是pc端有人脸识别这个流程 于是熟悉了下 附上官方文档地址 https www npmjs com package webcamjs 一 第一步下载 npm i webcamjs 二 vue3中引
  • React如何使用styled-component

    首先需要安装style component 在控住台输入npm install styled component save 全局如何使用呢 在index js中引入style js 以下是style js中的代码 其中使用了reset cs
  • 【数学】张量通俗入门

    1 张量 张量就是一组有序数 或者说 张量就是一组有序数的表现方式 或者说是记号 比如向量是一种表现方式 矩阵是一种表现方式 张量同样也是一种表现方式 它本质就是一组有序的数字而已 值得指出的是 张量是比向量和矩阵更高级的记号 它向下包含了