【问题标题】:scipy.optimize.curve_fit raises RuntimeWarningscipy.optimize.curve_fit 引发 RuntimeWarning
【发布时间】:2019-04-19 04:15:06
【问题描述】:

我试图通过更改两个参数(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

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

【问题讨论】:

    标签: python scipy curve-fitting data-fitting


    【解决方案1】:

    我找到了一个我不喜欢的解决方案,但它确实消除了警告。我发现,奇怪的是,“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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 2020-04-29
      • 2016-09-09
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多