python - scipy.optimize.curve_fit 引发 RuntimeWarning

标签 python scipy curve-fitting data-fitting

我试图通过更改两个参数(eA)来拟合曲线。目标曲线是通过指定n0=0.395绘制的,但其实际值为0.0395。所以我希望通过改变eA来实现相同的曲线。

import numpy as np
from scipy.optimize import curve_fit

def func(x,e,A):
    return A*(e+x)**0.0395 

strain = np.linspace(0,15,3000) # variable
e = 0.773
A = 386.5
n0 = 0.395
y = A*(e+strain)**n0 # target to minimize
popt, pcov = curve_fit(func, strain, y)

但是,运行代码后我不断收到此警告:

RuntimeWarning: invalid value encountered in power
  return A*(e+x)**0.0395

我想知道为什么会发生这种情况以及应该如何改进代码?

最佳答案

我找到了一个我不喜欢的解决方案,但它确实消除了警告。我发现,对我来说奇怪的是,“e”在 curve_fit() 中被设为负值。我在函数内部添加了一个“砖墙”来阻止这种情况,但这应该是不必要的。我的代码是:

import numpy as np
from scipy.optimize import curve_fit

def func(x,e,A):
    if e < 0.0: # curve_fit() hits a "brick wall" if e is negative
        return 1.0E10 # large value gives large error, the "brick wall"
    return A*(e+x)**0.0395 

strain = np.linspace(0,0.1,3) # variable
e = 0.773
A = 386.5
n0 = 0.395
y = A*(e+strain)**n0 # target to minimize
popt, pcov = curve_fit(func, strain, y)

关于python - scipy.optimize.curve_fit 引发 RuntimeWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53329980/

相关文章:

python - 在AWS lambda函数中获取日志两次

python - 使用 sklearn 中的拟合进行协方差估计时出错

python - 使用 Python 和 ODRPACK 拟合参数的约束

python - 是否可以在没有 track 参数的情况下使用 Tweepy 的过滤功能?

Python - 从循环构建字符串

python - 如何在 Mayavi2/VTK 中为绘图添加比例尺?

python - python中的邻近矩阵

Python affine_transform 不翻译?

matlab - 调试时如何使用曲线拟合工具?

python - 无法将类型 'Timestamp' 与类型 'int' 进行比较 - 减去数据集