В данный момент я пытаюсь закодировать модуль, который может различать произвольные измерения вектора.Чтобы быть точным, это на самом деле оператор дивергенции для вектора n-измерений.Это мой код
from sympy import *
q = int(input("State your vector dimensions: "))
n = q+1
def divergence(f):
"""
Divergence operator for n-dimensions vector
Please write the vector in form of an array
Please use en to indicate dimension
ie: [10*e1+5e*2, 5*e3-10*e2, 45*e3]
"""
w = symbols ('e1:%d'%n)
a0 = diff(f[0], w[0])
Мне нужен код для автоматического создания n-номеров функций diff (которые я импортирую из SymPy).Поэтому, когда бы я ни указывал свои векторные размеры, этот модуль дивергенции будет давать n-число diff функций и автоматически дифференцировать их соответственно своим размерам.Это должно быть что-то вроде этого.Допустим, мой вектор состоит из 5 измерений (которые я установил из входных данных).Затем я напишу f в виде массива с len (f) = 5. Мой код должен автоматически генерироваться примерно так:
def divergence(f):
w = symbols ('e1:%d'%n)
a0 = diff(f[0], w[0])
a1 = diff(f[1], w[1])
a2 = diff(f[2], w[2])
a3 = diff(f[3], w[3])
a1 = diff(f[4], w[4])
return a1 + a2 + a3 + a4 + a5
И всякий раз, когда я устанавливаю новый вход, код автоматически изменится соответственно на вход.Как мне этого добиться?
Причина, по которой я пишу
w = symbols ('e1:%d'%n)
вместо `
w = symbols ('e0:%d'%n)
, заключается лишь в том, что на самом деле принято указывать размеры вектораот е1, а не е0.
Я действительно новичок в SymPy и никогда раньше не изучал символьные вычисления.Все ли базовые свойства NumPy также есть в SymPy (например, array и cos)?