高能物理学#

伽马矩阵#

模块来处理表示为张量对象的伽马矩阵。

实例#

>>> from sympy.physics.hep.gamma_matrices import GammaMatrix as G, LorentzIndex
>>> from sympy.tensor.tensor import tensor_indices
>>> i = tensor_indices('i', LorentzIndex)
>>> G(i)
GammaMatrix(i)

注意,已经有一个GammaMatrixHead在四个维度中的实例:GammaMatrix,它被简单地声明为

>>> from sympy.physics.hep.gamma_matrices import GammaMatrix
>>> from sympy.tensor.tensor import tensor_indices
>>> i = tensor_indices('i', LorentzIndex)
>>> GammaMatrix(i)
GammaMatrix(i)

访问度量张量

>>> LorentzIndex.metric
metric(LorentzIndex,LorentzIndex)
sympy.physics.hep.gamma_matrices.extract_type_tens(expression, component)[源代码]#

从a中提取 TensExpr 所有张量 \(component\) .

返回两个张量表达式:

  • 第一个包含所有 Tensor 拥有 \(component\) .

  • 第二个包含所有剩余的。

sympy.physics.hep.gamma_matrices.gamma_trace(t)[源代码]#

单列伽马矩阵的迹

实例

>>> from sympy.physics.hep.gamma_matrices import GammaMatrix as G,         gamma_trace, LorentzIndex
>>> from sympy.tensor.tensor import tensor_indices, tensor_heads
>>> p, q = tensor_heads('p, q', [LorentzIndex])
>>> i0,i1,i2,i3,i4,i5 = tensor_indices('i0:6', LorentzIndex)
>>> ps = p(i0)*G(-i0)
>>> qs = q(i0)*G(-i0)
>>> gamma_trace(G(i0)*G(i1))
4*metric(i0, i1)
>>> gamma_trace(ps*ps) - 4*p(i0)*p(-i0)
0
>>> gamma_trace(ps*qs + ps*ps) - 4*p(i0)*p(-i0) - 4*p(i0)*q(-i0)
0
sympy.physics.hep.gamma_matrices.kahane_simplify(expression)[源代码]#

此函数用于取消四维伽马矩阵乘积中的收缩元素,从而得到一个等于给定表达式的表达式,而不包含收缩伽马矩阵。

参数:

`expression` the tensor expression containing the gamma matrices to simplify.

笔记

如果给定了旋量指数,矩阵必须按乘积中给定的顺序给出。

算法

算法背后的思想是使用一些众所周知的恒等式,即对于包含偶数个 \(\gamma\) 矩阵

\(\gamma^\mu \gamma_{a_1} \cdots \gamma_{a_{2N}} \gamma_\mu = 2 (\gamma_{a_{2N}} \gamma_{a_1} \cdots \gamma_{a_{2N-1}} + \gamma_{a_{2N-1}} \cdots \gamma_{a_1} \gamma_{a_{2N}} )\)

对于奇数 \(\gamma\) 矩阵

\(\gamma^\mu \gamma_{a_1} \cdots \gamma_{a_{2N+1}} \gamma_\mu = -2 \gamma_{a_{2N+1}} \gamma_{a_{2N}} \cdots \gamma_{a_{1}}\)

不必重复应用这些恒等式来抵消所有收缩指数,而是有可能识别出这种操作所产生的联系,从而将问题简化为自由伽马矩阵的简单重新排列。

实例

使用时,请始终记住原始表达式系数必须单独处理

>>> from sympy.physics.hep.gamma_matrices import GammaMatrix as G, LorentzIndex
>>> from sympy.physics.hep.gamma_matrices import kahane_simplify
>>> from sympy.tensor.tensor import tensor_indices
>>> i0, i1, i2 = tensor_indices('i0:3', LorentzIndex)
>>> ta = G(i0)*G(-i0)
>>> kahane_simplify(ta)
Matrix([
[4, 0, 0, 0],
[0, 4, 0, 0],
[0, 0, 4, 0],
[0, 0, 0, 4]])
>>> tb = G(i0)*G(i1)*G(-i0)
>>> kahane_simplify(tb)
-2*GammaMatrix(i1)
>>> t = G(i0)*G(-i0)
>>> kahane_simplify(t)
Matrix([
[4, 0, 0, 0],
[0, 4, 0, 0],
[0, 0, 4, 0],
[0, 0, 0, 4]])
>>> t = G(i0)*G(-i0)
>>> kahane_simplify(t)
Matrix([
[4, 0, 0, 0],
[0, 4, 0, 0],
[0, 0, 4, 0],
[0, 0, 0, 4]])

如果没有收缩,则返回相同的表达式

>>> tc = G(i0)*G(i1)
>>> kahane_simplify(tc)
GammaMatrix(i0)*GammaMatrix(i1)

工具书类

[1] 伽马矩阵收缩积的减少算法,约瑟夫·卡恩,数学物理杂志,第9卷,第10期,1968年10月。

sympy.physics.hep.gamma_matrices.simplify_gpgp(ex, sort=True)[源代码]#

产品简化 G(i)*p(-i)*G(j)*p(-j) -> p(i)*p(-i)

实例

>>> from sympy.physics.hep.gamma_matrices import GammaMatrix as G,         LorentzIndex, simplify_gpgp
>>> from sympy.tensor.tensor import tensor_indices, tensor_heads
>>> p, q = tensor_heads('p, q', [LorentzIndex])
>>> i0,i1,i2,i3,i4,i5 = tensor_indices('i0:6', LorentzIndex)
>>> ps = p(i0)*G(-i0)
>>> qs = q(i0)*G(-i0)
>>> simplify_gpgp(ps*qs*qs)
GammaMatrix(-L_0)*p(L_0)*q(L_1)*q(-L_1)