Голый со мной, так как я очень новичок в кодировании и очень ценю помощь. У меня есть набор данных в виде матрицы 15x55 в отдельном файле, который я импортировать и тянуть данные с помощью этого кода:При попытке подгонки данных к экспоненциальной кривой в python я получаю странный набор ошибок
ScanNum = []
#Import the data
data = loadtxt('FNScan40.txt')
#Define columns
ccd1= data[:,14]
t= data[:,0]
Я уверен в этой части кода, потому что я использовал его в другом коде и была эта работа. Затем я определил функцию, к которой я хотел подобрать данные.
def Kinetics(tk,A,B):
f=A*(1.0-math.e**(-B*tk))
return f
Где A и B - неизвестные коэффициенты. Затем я поместил данные x и y, которые у меня есть в массивы.
x = array([t])
y = array([ccd1])
До здесь я не уверен, что все правильно, это когда я на самом деле пытаюсь выполнить подгонку кривой, что у меня есть проблемы. Это остальная часть кода, что у меня есть:
popt, pcov = curve_fit(Kinetics, x, y, p0=None)
print popt, pcov
plt.figure()
plt.plot(x, kinetics(x, *popt), label="Fitted Curve")
plt.show()
Когда я выполняю код, я получаю сообщение об ошибке: Неправильные вход: N = 2 не должна превышать M = 1. Я знаю, что N - количество точек данных, а M - количество начальных параметров. Я не уверен, как это исправить. Единственное, что я пытался попробовать, это установить мои собственные начальные параметры, поэтому в приведенном выше коде я определил p0 = [1,1] (так как у меня есть два параметра, которые я пытаюсь угадать, A и B.) Это привело только к ту же ошибку (неправильный вход: N = 2 не должен превышать M = 1), поэтому я попытался изменить количество «1», в которое я вложил. Если я перехожу через два, я просто получаю сообщение об ошибке: я пытался ввести слишком много аргументов в кинетику, что имеет смысл.
Я пробовал все, что мог придумать/найти в Интернете, безрезультатно. Если M - начальные параметры, почему не меняется число «1 в p0», измените то, что сообщает об ошибке как M? Что я могу сделать, чтобы исправить эту проблему?