Есть ли способ обеспечить получение dsolve()
для использования произвольных констант, названных другой последовательностью, чем C1, C2 и т. Д.?Пользовательские произвольные постоянные имена для sympy dsolve?
cse()
разрешает параметр symbols
, который принимает бесконечный генератор имен, но я не вижу аналогичного параметра dsolve()
.
Я решаю схемы, полные символических емкостей, и константы dsolve
запутывают.
Если это не так, есть ли быстрый способ заменить произвольные константы другими, такими как k_1, k_2 и т. Д.? Похоже, что dsolve()
использует C1, C2 и т. Д. Для своих констант, в то время как мой код использует C_1, C_2 и т. Д. Для емкостей. Я мог бы изменить свое название повсюду, чтобы использовать нестандартный символ емкости, но я бы предпочел не делать этого.
С благодарностью @Marshmallow, я начал использовать эту процедуру, которая оборачивает dsolve позволяет мне изменить символы после факта. Там по-прежнему риск столкновения, но это достаточно хорошо сейчас:
def newdsolve(eq,*args,**kwds):
ss=kwds.get('symbols')
sln=dsolve(eq,*args,**kwds)
psyms=((newdsolve.csre.match(n.name),n) for n in eqVc.free_symbols)
if ss and isinstance(ss,str):
subsdict=dict([(n[1],'k_'+n[0].group(1)) for n in psyms if n[0]])
elif ss:
subsdict=dict([(n[1],next(ss)) for n in psyms if n[0]])
else: subsdict={}
return sln.subs(subsdict)
newdsolve.csre=re.compile(r'C(\d+)')
Я открыл [SymPy выпуск] (https://github.com/sympy/sympy/issues/11024) для этого. – asmeurer