【发布时间】:2017-11-24 00:16:11
【问题描述】:
我很难用给定的函数来拟合一组值: f(x)= const*(1-(x/a)**b)**c
我正在使用带有以下代码的 python 3.6.3:
import numpy as np
import scipy.optimize as opt
from scipy.optimize import curve_fit
x=[0.,0.4,0.8,1.6,2.,2.4]
y=[0.09882902,0.07298427,0.05111438,0.01679405,0.00517385,0.00065633]
def func(x,a,b,c):
return y[0] * ( 1 - (x/a)**b )**c
x0=np.array([2.0,0.9,1.5])
opt.curve_fit(func,x,y,p0=x0)
我收到以下错误消息:
RuntimeWarning: invalid value encountered in power
return y[0] * ( 1 - (x/a)**b )**c
///: OptimizeWarning: Covariance of the parameters could not be estimated
category=OptimizeWarning)
问题似乎是因为最后一个指数,因为以下函数可以正常工作:
def func(x,a,b,c):
return y[0] * ( 1 - (x/a)**b )*c
【问题讨论】:
标签: python scipy data-fitting