Леви-Чивита тензор в numpy - PullRequest
0 голосов
/ 14 января 2020

Я ищу компактный код numpy для получения тензора Леви-Чивита в любом выбранном пользователем количестве измерений. Есть идеи?

1 Ответ

1 голос
/ 15 января 2020

Из тензорных функций 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

При разумном количестве измерений размер тензора не так велик, поэтому я не стал бы беспокоиться об эффективности. Для начала я бы попробовал итеративное решение; это не должно быть причудливым.

...