传递给
符号模型函数传递你好由于我的象征功能,我一直穿着合身的衣服,请让我知道这个问题如何解决这里是我的代码,我需要传递两个独立的_ 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.Model
的independent_vars
必须与模型函数的函数参数的名称匹配。在您的情况下,模型函数具有g(xa, anion, a)
的签名,因此这些签名将是xa
、anion
和a
。xCl
和xI
作为自变量都没有意义——它们根本不是模型函数的变量。这就是的例外
ValueError: Invalid independent variable name ('xCl') for function g
正在表达。