dsolve()
C1、C2などとは異なるシーケンスで名前が付けられた任意の定数を使用できるようにする方法はありますか?
cse()
名前の無限のジェネレーターを受け入れるパラメーターを許可しsymbols
ますが、同様のパラメーターは見当たりませんdsolve()
。
記号容量でいっぱいの回路方程式を解いていますが、dsolve
定数がわかりにくくなっています。
それに失敗した場合、任意の定数を k_1、k_2 などの他の定数に置き換える簡単な方法はありますか? dsolve()
私のコードは静電容量にC_1、C_2などを使用しているのに対し、その定数にはC1、C2などを使用しているようです。非標準の静電容量記号を使用するようにどこでも名前を変更できますが、そうしないことをお勧めします。
@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+)')