我正在尝试使用curve_fit软件包用自定义模型拟合一些(少数)离散的实验值。 问题是我得到了警告(?):“优化警告:参数的协方差无法估计”,当然参数没有可靠的值
我读到这个问题是我的数据集离散性的结果,我可以使用LMFIT包解决它。 根据我发现的一些例子,我应该定义一个线性空间,然后将我的实验值分配给相应的x点。不幸的是,由于我的分数太少,这个过程会引入太多错误。因此,我想知道是否有一种方法可以通过curve_fit软件包克服这个问题。在同一代码中,我使用它来适应指数模型和其他数据(相同数量的元素),没有任何问题
谢谢你的提示 具体而言,将代码简化为基本内容:
xa= 阵列([0.5,0.53,0.56,0.59,0.62,0.65,0.68,0.7,0.72,0.74,0.76, 0.78,0.8,0.82],数据类型=对象)
嗯= 阵列([0.40168,0.4010399999995,0.4002799999999997,0.39936,, 0.39828, 0.397, 0.39544, 0.39424000000000003, 0.39292, 0.39144, 0.38976,0.38788,0.38580000000000003,0.38348],数据类型=对象)
from scipy.optimize import curve_fit
def fit_model(x, a, b):
return (1 + np.exp((a - 0.57)/b))/(1 + np.exp((a-x)/b))
popt_an, pcov_an = curve_fit(fit_model, xa, ya, maxfev=100000)
我不理解在这里使用lmfit的问题。我也不明白“对象数组”在这里的用法。我可能会将您的硬连线非x依赖因子称为其自身变量(例如,“c”),并使用以下方法:
这将打印出一份
并显示如下图:
fit_模型似乎无法调整数据
我将使fit_模型完美地拟合第一个数据点(0.5,0.40168),并使指数
(1 + np.exp((a - x)/b))
随着x(1 + np.exp((a + x)/b))
的增加而增加,因此fit_模型随着x的减少而减少,与输入数据相同我得到的解决方案是:
相关问题 更多 >
编程相关推荐