Python - подгонка данных с экспоненциальной функцией

Broc спросил: 03 ноября 2018 в 09:46 в: python

Я знаю, что есть несколько вопросов по аналогичной теме, хотя я не смог найти правильный ответ.

Я хотел бы дополнить некоторые данные функцией (называемой Bastenaire) и iget значения параметров. Вот код:

import numpy as np
from matplotlib import pyplot as plt
from scipy import optimizedef bastenaire(s, A,B, C,sd):    logNB=np.log(A)-C*(s-sd)-np.log(s-sd)    return np.exp(logNB)-BS=np.array([659,646,634,623,613,595,580,565,551,535,515,493,473,452,432,413,394,374,355,345])
N=np.array([46963,52934,59975,65522,74241,87237,101977,116751,133665,157067,189426,233260,281321,355558,428815,522582,630257,768067,902506,1017280])fitmb,fitmob=optimize.curve_fit(bastenaire,S,N,p0=(30000,2000000000,0.2,250))plt.scatter(N,S)
plt.plot(bastenaire(S,*fitmb),S,label='bastenaire')
plt.legend()plt.show()

Однако подгонка кривой не может определить правильные параметры, и я получаю: OptimizeWarning: ковариация параметров не может быть оценена. Те же результаты, когда я не даю значения входных параметров.

Рисунок

Есть ли способ что-то настроить и получить результаты? Должен ли мой набор данных охватывать более широкий диапазон и значения?

Спасибо!

Broc

0 ответов