【问题标题】:Levi-Civita tensor in numpynumpy 中的 Levi-Civita 张量
【发布时间】:2020-05-01 14:28:54
【问题描述】:

我正在寻找紧凑的numpy 代码来生成任何用户选择的维数的 Levi-Civita 张量。有什么想法吗?

【问题讨论】:

  • 你有没有尝试过?您可以在此处发布代码供人们查看,有人可以帮助您处理或修复它。
  • @cmxu 我能说什么?我尝试了一些我自己提出的算法,但结果并不好。没有看到浪费任何人时间的意义。
  • 这种态度不会引起很大兴趣。我们大多数人对解决问题和帮助他人解决问题更感兴趣。是的,一定有人为他们自己的工作制定了通用代码,但他们今天可能不会在 SO 上闲逛。

标签: numpy tensor


【解决方案1】:

来自sympy张量函数:

In [13]: tensor_functions.eval_levicivita(x,y,z)                                                 
Out[13]: 
(-x + y)⋅(-x + z)⋅(-y + z)
──────────────────────────
            2    

def eval_levicivita(*args):
    """Evaluate Levi-Civita symbol."""
    from sympy import factorial
    n = len(args)
    return prod(
        prod(args[j] - args[i] for j in range(i + 1, n))
        / factorial(i) for i in range(n))
File:      /usr/local/lib/python3.6/dist-packages/sympy/functions/special/tensor_functions.py
Type:      function

对于合理数量的维度,张量大小不是那么大,所以我不会担心效率。首先,我会尝试迭代解决方案;它不需要花哨。

【讨论】:

    猜你喜欢
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    相关资源
    最近更新 更多