有没有办法让 getdsolve()
使用由与 C1、C2 等不同的序列命名的任意常量?
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+)')