令 (cos(x)exp(x)) 为任何简单函数。我想将 sympy 函数更改为函数 (a*cos(x) exp(x)+b) 并将参数 (a,b) 拟合到数据中。
如果有直接的方法,我现在不适合 sympy 函数。pip 包 symfit 0.2.3 不工作 ( https://symfit.readthedocs.io/en/stable/tutorial.html ) - 尝试导入部分包时出错。
可以使用 sympy 函数 lambdify 创建一个像这样的 numpy 函数
from sympy import symbols
from sympy import cos, exp
from sympy import lambdify
x = symbols('x')
python_formula = lambdify(x,cos(x)*exp(x), 'numpy')
我现在将我的参数相乘
def function(x,a,b,python_formula):
return a*python_formula(x) +b
不幸的是,如果我使用 scipy.optimize.curve_fit 之类的
optimizedParameters, pcov = opt.curve_fit(function, x_data, y_data);
它会将我函数中的“python_formula”参数作为可优化参数并会崩溃。我也没有找到方法来指定 fit 参数(https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html)。
如果您有一个想法,如何通常适合 sympy 函数或修复代码的方法,我会很感激听到它。