【发布时间】:2021-02-23 01:36:12
【问题描述】:
我正在尝试使用以下类型的拉伸指数函数拟合一些数据:c*(exp(-x/tau)^beta)。我感兴趣的值是 tau。
我试图拟合的数据通过零,有时也是负数(例如,值从 -1 变为 1)。
def st_exp(x,c,tau,beta):
return c*(np.exp(-(x/tau)**beta))
当我尝试适应时,我会收到运行时警告:
RuntimeWarning: invalid value encountered in power
return c*(np.exp(-(x/tau)**beta))
我想按原样拟合数据,但是,这会显示运行时警告,并且拟合不会收敛或仅在遇到零之前拟合。
我使用的拟合:
def get_index(x0,x):
return np.argmin(abs(x-x0))
init_vals = [max(y)-min(y),-1*x[get_index(np.mean(y),y)]/np.log(0.5),0.5]
best_vals, covar = curve_fit(st_exp, x,y, p0=init_vals)
The data I am trying to fit :
x = np.arange(0,400000,1000)
y = np.array([-45819., -37322., -34006., -28906., -26565., -13311., -10992.,
-11233., -3313., -2421., -1687., 9665., 11951., 12796.,
22440., 20331., 24732., 26594., 25464., 30668., 37412.,
33261., 34365., 39359., 39105., 40260., 48946., 48351.,
49872., 44422., 49969., 54536., 54248., 57340., 61403.,
61843., 63386., 61182., 64080., 64052., 68232., 68167.,
76288., 71786., 74485., 76070., 76540., 70167., 82014.,
79459., 80499., 80073., 80697., 88209., 80099., 83415.,
93613., 86038., 89498., 86073., 86999., 94242., 91823.,
91162., 93277., 94834., 89088., 92613., 97663., 95948.,
92840., 105920., 98487., 100951., 88721., 95078., 99831.,
94738., 102520., 98576., 99038., 103921., 102951., 103186.,
100755., 103631., 107259., 107376., 105404., 109739., 110135.,
107829., 103196., 110798., 104497., 107074., 111857., 110816.,
111853., 111890., 107932., 111878., 109776., 112154., 112769.,
113155., 114862., 109560., 111112., 111516., 110314., 115911.,
115820., 118418., 113124., 114579., 118102., 115259., 112640.,
121617., 118125., 114923., 115210., 121919., 115841., 111980.,
117730., 112565., 120893., 113758., 121129., 110559., 118674.,
122867., 118574., 118022., 118656., 117656., 116813., 118591.,
119722., 110845., 126545., 119452., 121438., 118271., 125652.,
121025., 119663., 119917., 121405., 124934., 117835., 121760.,
123870., 126825., 120996., 116165., 119473., 120996., 120530.,
122197., 119907., 123786., 116293., 118625., 123068., 123951.,
123443., 120781., 126291., 119316., 119401., 125871., 120863.,
117013., 125037., 124775., 117822., 123755., 121240., 122696.,
117997., 124865., 123457., 124229., 117705., 126550., 121866.,
123070., 123585., 126033., 126355., 124475., 121325., 125392.,
125882., 126755., 128013., 123610., 123611., 123853., 124819.,
125464., 123897., 128276., 120328., 125569., 128821., 128039.,
126223., 123052., 121924., 121932., 122968., 129473., 124053.,
122576., 124538., 127567., 129659., 126090., 130546., 131749.,
118672., 130372., 125783., 126413., 126283., 125898., 124901.,
130037., 123192., 122977., 125806., 125544., 131714., 130757.,
128980., 130233., 129140., 127372., 118302., 126342., 126046.,
127595., 129635., 121161., 123841., 124058., 124156., 131894.,
124745., 129556., 127832., 126236., 130072., 121877., 121383.,
136089., 123984., 127407., 128703., 127597., 126220., 124028.,
122716., 127398., 129724., 128971., 124488., 127229., 130337.,
132997., 126681., 127312., 123270., 123822., 127458., 127653.,
122740., 132875., 124466., 132315., 129569., 128041., 127525.,
124972., 123646., 122957., 130239., 126285., 127734., 131409.,
128138., 133744., 131438., 130377., 130763., 127868., 129223.,
130644., 131814., 132781., 127419., 124382., 127924., 129190.,
127443., 132475., 130202., 128066., 130360., 130282., 125531.,
130259., 123453., 126989., 129615., 132047., 129424., 126729.,
127324., 128756., 121690., 132176., 126250., 127830., 128985.,
133258., 125664., 123530., 130123., 126947., 123108., 125562.,
126388., 131747., 128793., 121865., 121705., 127039., 132701.,
128835., 133300., 125677., 134063., 136207., 128572., 127731.,
130304., 129674., 126436., 132357., 128154., 129400., 126893.,
132012., 129471., 124752., 127925., 123735., 125801., 126371.,
128554., 126691., 126970., 129754., 130953., 125113., 133345.,
127633., 128070., 127592., 125389., 127235., 125677., 131191.,
130972., 124687., 132342., 130269., 133340., 127084., 132171.,
131521., 133572., 124134., 132673., 131440., 122008., 129178.,
133775., 126584., 131278., 133229., 128349., 139349., 127294.,
133538.])
【问题讨论】:
标签: python numpy scipy curve-fitting