无法将 SymPy 求解的方程解转化为函数

Trouble making a SymPy Solved Equation Solution into a Function

我正在尝试使用 Python (3) 来处理热力学实验室的结果。其中一部分涉及找到最佳拟合曲线,并猜测我需要的指数我正在使用 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

但是打印出来的tao值竟然是0(这不应该)。 Type(eq) 给出 tao '<_ast.Module object at 0x10773b3c8>'。有什么我可以做的吗?如果没有,有没有办法可以使用 SymPy 中求解的方程式?

感谢您的帮助。

按原样评估解决方案可能更容易。例如,要评估 t=0 处的解决方案,请使用 subs 方法。

>>> soln = sp.solve([(Tinf + (Tsi - Tinf) * sp.exp(-t/Tao))-Ts_t], [Tao])[Tao]
>>> soln
-t/log((Tinf - Ts_t)/(Tinf - Tsi))
>>> soln.subs(t,0)
0

如果您需要评估所有四个变量的解决方案,只需重复 sub

soln.subs(t,0).subs(Tinf,<something>).subs(Ts_t,<something>).subs(Tsi,<something>)

如果你碰巧在字典中有所有四个变量值 d 那么你可以使用这种形式:

soln.subs(d)