传递给lmfit的符号模型函数


符号模型函数传递你好由于我的象征功能,我一直穿着合身的衣服,请让我知道这个问题如何解决这里是我的代码,我需要传递两个独立的_ var,它们是xCl和XI,a是参数:
import numpy as np
import lmfit
import sympy as sp    
anion = {'I': 1, 'Cl': 1}
xa = {'xI': 0.2, 'xCl': 0.3}
xCl = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
xI = [0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.1, 0.8, 0.11, 0.12]
def g(xa, anion, a):
xzc = 0
for k1, k2 in zip(anion, xa):
xzc += sp.symbols(f"x{k1}") * sp.symbols(f"x{k2}") + a
return xzc
obj = lmfit.Model(g, independent_vars=['xCl', 'xI'])
pars = obj.make_params(a=0.1)
result = mod.fit(ydat, pars, xCl, xI)
print(result.fit_report())

但我发现;

**************************************************
Traceback (most recent call last):
File "F:ZohrehMainZohrehpostdoc-fieldCSUpythonProjectsimple_Lmfit.py", line 36, in <module>
obj = lmfit.Model(g, independent_vars=['xCl', 'xI'])
File "C:UsersZohrehAppDataRoamingPythonPython310site-packageslmfitmodel.py", line 277, in __init__
self._parse_params()
File "C:UsersZohrehAppDataRoamingPythonPython310site-packageslmfitmodel.py", line 541, in _parse_params
raise ValueError(self._invalid_ivar % (arg, fname))
ValueError: Invalid independent variable name ('xCl') for function g
*********************************************************

我发现,有必要使用lambdify将sympy方程改为numpy方程。通过这种方式,它将被授予ndarray float被发送到lmfit模型。

传递给lmfit.Modelindependent_vars必须与模型函数的函数参数的名称匹配。在您的情况下,模型函数具有g(xa, anion, a)的签名,因此这些签名将是xaanionaxClxI作为自变量都没有意义——它们根本不是模型函数的变量。这就是的例外

ValueError: Invalid independent variable name ('xCl') for function g

正在表达。

最新更新