私は熱力学ラボの結果を処理するためにPython(3)を使用しようとしています。そのうちの1つは、最適フィットカーブを見つけ、必要な指数を推測することです。私はそれを解決するためにSymPyを使用しています。SymPy解法の解を関数に変換するときの問題
私は立ち往生しています。 SymPyは方程式をうまく解くことができますが、解決策を利用可能な形にすることは私を困惑させています。 SymPyからシンボリック以外のものに戻す方法はありますか?これは私が今まで試したことです:
def Solve_Tao(Td,TC,t):
"""Solves for Decay Constant and Returns Average For Data"""
T = t # Time, Storing so it doesn't become symbolic
Tao, t, Tinf, Tsi, Ts_t = sp.symbols('Tao t Tinf Tsi Ts_t')
sp.init_printing(use_unicode=False)
TaoStrings = sp.solve([(Tinf + (Tsi - Tinf) * sp.exp(-t/Tao))-Ts_t], [Tao])
TaoStrings = sp.sstrrepr(TaoStrings)
TaoS = TaoStrings[6:9] + 'np.'+ TaoStrings[9:-1]
eq = parse(TaoS)
Tinf = Td
Ts_t = TC
Tsi = TC[0]
t = T
tao = eq
print('tao',tao)
return tao
しかし、印刷されたタオの値は0であることが判明しました。タイプ(eq)は、tao '< _ast.Moduleオブジェクト0x10773b3c8>'になります。私はこれで何かできますか?そうでない場合は、SymPyの解決済みの式を使用する方法はありますか?
あなたのお手伝いがありがとうございます。
感謝を。私はあなたが辞書と.Subs()の繰り返しを提案したことを試しました。最初に「Dict」にはアトリビュート「Subs」がありません.2番目のものを試してみると AttributeError: 'Mul'オブジェクトには「Subs」属性がありません –
大文字の「Subs」は使用しないことをお勧めします。そうでない場合は、コード全体を表示してください。 –
私はしました!問題は解決し、それは素晴らしい作品です。ありがとうございました! –