You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Sympy Tensor对象零分量?狄拉克伽马矩阵共轭计算报错

问题解决:SymPy中计算狄拉克伽马矩阵厄米共轭的索引错误

问题原因

你遇到的ValueError: Repeated index: 0是因为混用了两种不同类型的GammaMatrix对象:

  • GammaMatrix("0")创建的是具体分量的矩阵对象,SymPy会将其中的"0"识别为张量索引;
  • GammaMatrix(μ)创建的是带抽象张量索引的对象。
    两者相乘时,SymPy的张量索引检查机制会误判"0"为重复索引,从而抛出错误。

解决方案

用张量索引的方式定义γ₀,而非直接传入字符串"0",确保所有GammaMatrix对象都基于统一的张量索引体系:

from sympy import symbols, Identity
from sympy.physics.hep.gamma_matrices import GammaMatrix
from sympy.tensor.tensor import TensorIndexType, tensor_indices, Tensor

# 定义维度符号
d = symbols('d', positive=True, integer=True)

# 定义洛伦兹索引类型和度规
Lorentz = TensorIndexType('Lorentz', dummy_name='L', dim=d, metric_name='g')
μ, ν = tensor_indices('μ ν', Lorentz)
# 用张量索引定义γ₀
zero = Lorentz.index(0)
gamma_0 = GammaMatrix(zero)
gamma_μ = GammaMatrix(μ)

# 定义厄米共轭操作
def gamma_dagger(gamma_matrix):
    return gamma_0 * gamma_matrix * gamma_0

# 输出结果
print(gamma_dagger(gamma_μ))

# 验证γ₀²=I
print(gamma_0 * gamma_0 == Identity(d))

说明

  • 通过Lorentz.index(0)创建的是洛伦兹索引体系下的具体索引值,和抽象索引μ属于同一类型,相乘时不会触发重复索引错误;
  • 验证γ₀²=I时,用Identity(d)表示d维单位矩阵,符合伽马矩阵的基本性质。

内容的提问来源于stack exchange,提问作者MatFy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 16:46:04