Допустим, у нас есть 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. Извините, если это фиктивный вопрос.