maplechap13Word文档格式.docx
- 文档编号:17260330
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:23
- 大小:351.53KB
maplechap13Word文档格式.docx
《maplechap13Word文档格式.docx》由会员分享,可在线阅读,更多相关《maplechap13Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
度量张量是最常用的张量了,张量的各种微分运算都需要用到度量张量。
由于度量张量也是张量,所以自然也可以用create来生成。
不过在编写交互式程序中,如果需要用户输入度量张量,这是很不方便的。
在tensor工具包中还提供了交互式输入度量张量的子程序entermatric。
利用它,只需要给出各个指标的线元系数表达式,就可以得到相应坐标系下的度量张量。
函数entermatric由两个参数,第一个用于输出度量张量,第二个用于输出坐标符号。
由于都是作为输出参数,两个参数都需要是未被赋值的变量(对于已赋值变量,可以用单引号扩起来)。
作为例子,我们用它来输入柱坐标的度量张量:
系统出现提示,等待用户输入空间的维数:
接下来输入的是各个坐标的变量符号(因为要用在输入线元系数表达式中)。
然后系统提示用户,度量张量的矩阵是否为对角阵。
由于柱坐标是正交坐标系,所以度量张量的矩阵是对角阵。
最后,需要输入的是线元的系数:
至此,柱坐标度量张量的协变分量就输入完成了。
同时,我们还得到了坐标符号。
13.2张量的代数运算
13.2.1张量的比较
我们称两个张量相等,当且仅当它们在同一个坐标系中的协变(或逆变、混变)分量一一相等。
在Maple中,可以利用tensor工具包中的函数compare比较两个张量。
不过,由于张量在Maple中是以分量的形式存放的,所以compare不能比较两个不同类型的张量(比如同一张量的混变分量和逆变分量,将视为不同)。
对于两个张量对象,Maple首先比较它们的阶数,维数,和指标类型,如果都相同,再对各个分量进行比较。
如果各个分量都相同,将返回Identical;
否则,则返回不同的分量的指标;
如果张量分量的矩阵采用的是不同的指标函数,则返回indexfunc。
函数compare在比较时会调用张量化简函数simp,所以,对于特殊的张量,最好重载函数simp。
对于化简后相同的张量,也将返回Indentical。
我们通过例子来说明它的使用。
首先比较一个分量由单位矩阵组成的三维空间的二阶张量和他本身:
不出我们的意料,返回的是相等——Identical。
然后,再将它和一个四维空间的二阶张量比较:
返回的是维数不匹配——Dimesionsunmatched。
13.2.2升降指标
在前一小节中,我们已经知道,不同指标类型的张量是不能比较的。
但是,利用tensor工具包中的函数raise和lower,可以分别完成张量分量的升、降指标。
它们的调用方法是这样的:
raise(contravariant_metric_tensor,A,i1,i2,...)
lower(covariant_metric_tensor,A,i1,i2,...)
其中,contravariant_metric_tensor是逆变分量形式的度量张量,而covariant_metric_tensor是协变分量形式的度量张量;
A是有待升/降指标的张量;
i1,i2,……是所需升/降的指标,在raise中,它们对应的A中的指标必须是协变指标,而lower中则必须是逆变指标。
例如,对于下面的混变分量张量T:
我们利用前一节中输入的柱坐标下的协变形式的度量张量g对其降指标:
这样,就得到了该张量的协变分量形式。
但是,如果需要升指标,就必须用到逆变形式的度量张量。
对于二阶张量,可以用求逆的方式从度量张量的协变分量求得其逆变分量,tensor工具包中的invert函数,可以完成二阶张量的逆的运算:
函数invert在求得二阶张量的逆的同时,还求得了张量的行列式值,通过第二个参数返回:
利用逆变形式的度量张量,就可以进行升指标的运算了:
13.2.3张量的线性组合
我们把同阶张量的数乘和加减运算称为线性组合(linearcombination),利用tensor工具包中的函数lin_com可以完成这一类运算。
和张量的比较一样,由于Maple中用分量方式存储张量,所以,参加运算的每一个张量必须事先化成相同的指标类型。
该函数的调用形式是这样的:
lin_com(c1,T1,c2,T2,....,cN,TN)
其中,c1,c2,……是代数表达式;
T1,T2,……是张量对象,它代表这样的运算:
这个函数的参数数量不限,可以进行任意多个张量的线性组合。
函数中的代数表达式参数c1,c2,……可以省略,默认情况下,认为它们是1。
作为例子,我们用它来进行下面几个张量的运算。
为了输入的简洁,我们直接用table构筑张量数据对象,而不采用create函数生成:
下面用lin_com函数求这三个张量的线性组合:
由于第二个张量的系数是1,所以将其省略。
13.2.4张量的内积、外积和缩并
在Maple的张量分析工具包中,张量的内、外积(innerandouterproduct)都可以用一个函数——prod来完成。
它的调用格式是这样的:
prod(A,B,[a1,b1],[a2,b2],...)
其中,A、B是有待作内/外积的张量对象;
[ai,bi]表示相乘后需要缩并的指标对,ai是A的指标,bi是B的指标。
而且,对应的指标必须是不同类型的才可以缩并。
作为例子,我们求两个一阶张量,也就是矢量的内积:
得到的结果是一个0阶张量,也就是标量,它的指标域是空数组:
在张量的阶数范围内,缩并的指标对可以有任意多,也可以没有,没有时就表示两个张量的外积(并乘)。
对于单个张量,也可以进行缩并运算,所用的函数是contract。
它的调用格式和prod基本相同,区别在于只有一个张量对象。
例如,我们也可以通过对于上面两个矢量的外积再进行缩并的手段得到它们的内积:
13.2.5张量的转置
如果保持基矢量的顺序不变,调换张量的指标顺序,得到的新张量,称为原张量的转置张量。
在Maple中,通过tensor工具包中的函数permute_indices可以求得张量的转置张量。
该函数的调用格式如下:
permute_indices(T,permutation)
这里,T是原张量;
permutation是一个有序表,有序表的长度等于T的阶数,它表示转置的方式,第i个元素的值表示转置后张量的第i个指标在原来张量中的位置。
例如对于一个三阶张量,如果调用该函数是第二个参数为[3,1,2],则表示原张量的第3个指标转置后成为新张量的第一个指标,第1个指标转置后称为第2个,原来的第2个则成为第3个。
我们通过一个简单的例子来说明它的用法。
为了使转置过程更清楚,我们将分量的位置在分量中予以体现:
需要注意的是,张量的转置并不仅仅是分量矩阵的转置,同时,它的指标类型也相应的改变了。
13.2.6张量的对称化和反对称化
利用tensor工具包中的函数symmetrize和antisymmetrize可以分别对张量在指定的指标上进行对称化和反对称化。
它们有以下的调用格式:
symmetrize(T,[i1,i2,...])
antisymmetrize(T,[i1,i2,...])
其中,T是原张量,[i1,i2,...]是进行对称化/反对称化的指标。
需要注意的是,对称化和反对称化只能对具有相同类型的指标进行,不同类型指标的分量对称化,是没有意义的,在Maple中也是不允许的。
举例来说,对于三阶张量T,如果给定的是混变指标形式[-1,1,-1],那么调用symmetrize(T,[1,3])就是对其分量进行如下的运算:
同样,反对称化anitsymmetrize(T,[1,3])表示这样的运算:
我们用一个对称二阶张量的例子来说明它们的用法:
由于它本身已经是对称张量,所以反对称化的结果将是0张量:
13.3张量场函数的导数
13.3.1张量分量对坐标的偏导数
张量分量对坐标的偏导数,也就是一般导数,可以用tensor工具包中的partial_diff函数求得。
函数的调用格式如下:
partial_diff(U,coord)
其中,U是有待求导的张量,coord是坐标符号组成的有序表。
它返回的是一个比U高一阶的张量数据类型,有这样的指标类型:
[U[index_char],-1]。
但是,我们知道,在一般的曲线坐标系中,张量分量的偏导数并不是张量分量。
由于Maple中的张量数据类型是以分量形式存储的,所以在表示上也可以表示非张量的分量,又如在下一接踵将要介绍的Christoffel符号。
不过,在使用时需要将它们加以区别,不可以对它们在进行一些必须是张量分量才可以进行的运算。
这里通过一个简单的例子来说明它的用法,我们用它来求一个矢量分量对坐标的偏导数。
首先生成一个1阶张量:
然后,定义坐标符号,再对U求偏导数:
对于度量张量的偏导数,可以调用函数d1matric和d2matric直接求得它对坐标的一阶和二阶偏导数。
这两个函数的调用格式是这样的:
d1metric(g,coord)
d2metric(D1g,coord)
其中,g是协变分量表示的度量张量,也就是具有指标类型[-1,-1]的度量张量;
D1g是度量张量的一阶偏导,具有[-1,-1,-1]的指标类型,可以用d1metric所得的结果作为这个参数;
coord是坐标符号组成的有序表。
还需要注意的是,g的分量矩阵必须具有对称的指标函数(生成时用symmetric参数,或者用entermetric生成)。
作为例子,我们用d1metric来求球坐标中度量张量的一阶偏导。
首先定义球坐标中的度量张量:
然后调用d1metric求它的一阶偏导,并给定坐标符号:
……
13.3.2Christoffel符号
在张量分析中,Christoffel符号是如下定义的。
把协变及时量对坐标的偏导数分别对逆变和协变基矢量分解:
其中的系数
成为第一类Christoffel符号,
称为第二类Christoffel符号。
我们知道Christoffel符号可以通过度量张量的导数求得。
在Maple的tensor工具包中的函数Christoffel1和Chrstoffel2可以分别求得这两类Christoffel符号:
Christoffel1(D1g)
Christoffel2(ginv,Cf1)
其中,D1g是度量张量对坐标的一阶偏导,可以用函数d1metric求得(参见12.3.1);
ginv是逆变分量表示的度量张量;
Cf1是第一类Christoffel符号。
两个函数返回的都是三阶张量数据类型,但实际上它们并不是张量分量。
它们的返回值,我们不妨用Cf1和Cf2表示,分别与指标记号下的Christoffel符号有以下的对应关系:
Cf1[compts][i,j,k]=
;
Cf2[compts][i,j,k]=
接着前一小节中的例子,用它们来求球坐标系的两类Christoffel符号。
首先利用12.3.1中的度量张量一阶偏导求第一类Christoffel符号:
然后用求逆函数invert求出逆变分量表示的度量张量,并利用它求第二类Christoffel符号:
由于Christoffel符号往往大部分分量为0,直接显示过于繁琐,不利于察看。
可以利用tensor中的displayGR工具显示它们的非0分量:
函数displayGR是用来显示广义相对论中常用张量信息的工具,它有这样的调用格式:
displayGR(GR_name,object)
其中GR_name是和广义相对论有关的对象名称,参见表12.1;
object是需要显示的对象。
表13.1displayGR所能显示的对象
名称
对象
coordinates
坐标符号
cov_metric
协变分量形式的度量张量
contra_metric
逆变分量形式的度量张量
detmetric
度量张量的行列式
Christoffel1
第一类Christoffel符号
Christoffel2
第二类Christoffel符号
Riemann
Riemann张量(曲率张量)
Ricci
Ricci张量(缩并的曲率张量)
Ricciscalar
Ricci标量
Einstein
Einstein张量
Weyl
Weyl张量
13.3.3张量分量对坐标的协变导数
张量场函数对坐标的导数在各基矢量上的分量称为张量分量的协变导数。
例如,三阶张量T对坐标的导数可以对一组混变基矢量分解为:
就是对应分量的协变导数
在Maple中,可以用tensor工具包中的函数cov_diff完成这一复杂的运算。
它具有以下的调用格式:
cov_diff(U,coord,Cf2)
其中,U是一个任意阶的张量,coord是坐标符号,Cf2是第二类Christoffel符号。
它的结果是一个比U高一阶的张量,对应的指标类型是[U[index_char],-1]。
作为例子,我们用上一小节中得到的球坐标中的第二类Christoffel符号,求一个矢量F的协变分量对坐标的协变导数。
13.3.4标量场的方向导数
所谓方向导数,就是标量场的梯度在给定方向上的投影。
利用tensor工具包中的directional_diff函数,可以求得标量场的方向导数。
directional_diff(f,V,coord)
其中,f是一个代数表达式,表示有待求导的标量场;
V是逆变分量形式的一阶张量,用来表示方向矢量场;
coord是坐标符号。
它的返回值是一个代数表达式。
我们通过一个例子来简单地说明它的使用方法:
13.3.5Riemann-Christoffel张量
从张量分析中,我们知道,欧氏空间和Riemann空间的区别在于空间的Riemann-Christoffel张量(曲率张量)是否为0。
用tensor工具包中的函数Riemann,可以求得空间的Riemann-Christoffel张量。
Riemann(ginv,D2g,Cf1)
其中,ginv是用逆变分量表示的度量张量;
D2g是度量张量对坐标的二阶偏导数,Cf1是第一类Christoffel符号。
作为例子,我们用Maple求球面二维空间中的Riemann-Christoffel张量。
首先建立球面坐标的度量张量:
然后,求出逆变分量表示的度量张量,度量张量的一阶、二阶导数,第一类Christoffel符号,进而求出Riemann-Christoffel张量:
Riemann-Christoffel张量也可以用displayGR显示其非零分量:
球面的Riemann-Christoffel张量有非0分量,由此可知,球面空间不是欧氏空间。
我们还可以由此求得球面的高斯曲率K:
高斯曲率非0,所以球面不是一个可展曲面——不能由平面弯曲得到。
13.4坐标变换
采用张量方法研究物理问题的一大优势是,物理现象的描述和坐标系的选取没有关系。
对于复杂的物理问题,可以先在简单地坐标系中描述,进而利用张量的坐标变换关系,推广到任意的坐标系中去。
这一节中将介绍Maple的张量工具包中的两个坐标变换工具——Jacobian和transform。
13.4.1坐标变换的Jacobi矩阵
利用tensor工具包中的函数Jacobian,可以求得给定变换的Jacobi转换矩阵以及Jacobi矩阵的逆。
它的调用形式是这样的:
Jacobian(Y,Finv,yJx,xJy)
其中,Y是新坐标系的坐标符号组成的有序表;
Finv是一组变换关系组成的有序表,元素个数须与Y相等,表中每个元素是一个等式,写成“老坐标=新坐标的表达式”的形式;
yJx,xJy用于输出(须为未赋值的变量),分别是从新坐标到老坐标和从老坐标到新坐标的Jacobi变换矩阵,为了便于计算,它们也被定义为张量数据类型,分别具有指标类型[1,-1]和[-1,1](同样,它们也不是张量分量)。
作为例子,我们求一个从笛卡尔坐标系向极坐标系转换的Jacobi矩阵。
首先,指定坐标符号,和坐标变换关系的表达式:
然后,就可以求它们的Jacobi变换矩阵了:
13.4.2张量的坐标变换
有了坐标变换的Jacobi矩阵,就可以对张量分量进行坐标变换了。
只需调用tensor包中的函数transform就可以了,它的调用格式如下:
transform(Tx,Finv,yJx,xJy)
其中,Tx是老坐标中的张量;
其余的参数意义和Jacobian中的相同。
不同的是,这里yJx和xJy都是作为输入参数的。
通过一个例子来说明它的使用。
这里,就利用上一小节中得到的笛卡尔系到极坐标系的Jacobi矩阵来求度量张量在极坐标下的分量形式。
笛卡尔坐标系中,度量张量的矩阵是一个单位阵:
通过坐标变换,就得到了度量张量在极坐标系中的分量形式(虽然这也许并不是个求度量张量的好方法)。
13.5张量对象的信息
13.5.1张量信息的获取
Maple的tensor工具包中有一组函数可以获取具有张量数据类型的对象的信息。
它们并不是必要的,因为tensor_type的各个域都可以直接用[]获得。
在编写程序时,它们可能会显得根方便。
由于它们都比较简单,这里只将它们列在下面,而不加以具体举例说明。
✧get_compts(A)获取张量对象A的分量域
✧get_char(A)获取张量对象A的指标类型域
✧get_rank(A)获取张量对象的阶数
13.5.2张量的指标函数
在介绍数组类型和线性代数时,我们已经接触过指标函数了,利用它们,可以生成一些特殊的矩阵。
在tensor工具包中,也含有一些特殊的指标函数,利用它们,可以生成有一定规律的矩阵和数组,进而生成特殊的张量。
这里将它们所对应的特征列成下表:
表13.2张量的指标函数
函数名
对应的特征
用途
cf1
三个指标中的前两个对称
用于第一类Christoffel符号
cf2
三个指标中的后两个对称
用于第二类Christoffel符号
cov_riemann
满足对称关系:
,
用于Riemann-Christoffel张量和Weyl张量的协变分量形式
d2met
四个指标中的前两个、后两个分别对称
用于度量张量协变分量对坐标的二阶偏导数
skew23
三个指标中的后两个偏斜对称
用于connexF中的结构系数
下面通过一个简单的例子来说明使用这些指标函数所能达到的效果。
首先定义一个以cov_riemann作为指标函数的四维数组,并对它的一个元素赋值:
可以看到,其他具有相应的对称性的元素也跟着变了:
灵活地利用这些指标函数,对于这些具有特殊对称性的张量来说,可以减少很多输入工作。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- maplechap13
![提示](https://static.bdocx.com/images/bang_tan.gif)