Я хотел бы определить несколько переменных, которые помечены некоторыми коэффициентами, и эти переменные не связаны друг с другом. Основным примером будут коэффициенты произвольной многомерной функции:
\sum_{i,j,k} c_{i,j,k} G(i, j, k)
В Mathematica я просто написал бы
c[1,1,1] = 1
...
c[1,2,1] = x
...
c[2,3,2] = x^100-x
...
c[10,10,10] = 0
(* Example of use *)
expr = Sum[ c[i,j,k] G(i,j,k), {i,0,10}, {j,0,10}, {k,0,10}}]
, где я определил все коэффициенты вручную. Теперь я пытаюсь сделать то же самое в Python. В настоящее время я реализую это с помощью функции:
import sympy
x = sympy.Symbol("x")
def coeff(a,b,c):
if (a,b,c) == (1,1,1): return 1
...
elif (a,b,c) == (1,2,1): return x
...
elif (a,b,c) == (2,3,2): return x**100-x
...
else:
return None
Кажется, она не будет хорошо масштабироваться, если имеется большое количество коэффициентов. Моей первой мыслью сделать это в Python было использование списков, но это работает, только если метки являются последовательными, например, i = 0,1,2, ... что не является моим случаем и не работает, если метки не целые числа. Словари также кажутся заманчивыми, но также кажутся довольно грязными, чтобы определить и добавить коэффициенты после факта. Есть ли лучшая практика для подобных вещей в Python?