Как назначить формулу на основе индекса каждой индексированной позиции тензора на sympy - PullRequest
2 голосов
/ 28 мая 2020

Допустим, у нас есть IndexedBase 2-мерный тензор r[i,j]. Я хочу назначить каждой индексированной позиции формулу, в которой используются позиции i и j других одномерных тензоров, например:

from sympy import symbols, IndexedBase, Idx
from sympy.functions.elementary.exponential import *

N = symbols('N', integer=True)
Np = symbols('Np', integer=True)

x = IndexedBase('x', (Np,))
z = IndexedBase('z', (Np,))
r = IndexedBase('r', (Np,N,))

i = Idx('i', (1,Np))
j = Idx('j', (1,N))

r[i,j] = sqrt(x[i]**2 + z[j]**2)

Я знаю, что это можно легко преобразовать в numpy, но sympy не позволяет связывать элементы с объектами IndexedBase.

Мне нужно понять, как sympy обрабатывает переменные IndexedBase в этом случае. Конечная цель - использовать lambdify в гораздо более сложном выражении, чтобы разрешить numpy векторов в качестве входных аргументов, но все операции основаны на этом типе ассоциации. Как я мог выполнить эту задачу?

Возможно, я неправильно понял основу переменных IndexedBase в Sympy. Извините, если это фиктивный вопрос.

...