---- ANSWERED ----Использование scipy.optimize's curve_fit
Приносим извинения, если этот вопрос слишком просто ответил. Я очень новичок в кодировании Python и сейчас занимаюсь сложным проектом. Любая помощь приветствуется; Я был бы рад разъяснить путаницу для тех, кто хочет помочь.
Я был в состоянии успешно поместилась свои данные с помощью этой функции, но модель привязки была неточной (термодинамические величины Образовавшееся были неправильными):
#defining function of the binding model
def binding_model(molar_ratio,Ka,n,dH):
return (dH*molar_ratio**n)/(molar_ratio**n+Ka**n)
#fitting molar enthalpy vs. molar ratio data with binding model
initial_paramaters=array([1,0,0])
parameters,cov=curve_fit(binding_model,molar_ratio,peak_areas,initial_paramaters)
n=parameters[0]
Ka=parameters[1]
dH=parameters[2]
Ffit=binding_model(molar_ratio,n,Ka,dH)
Я исправил модель привязки (к одноузельной связывания лиганда модель), но я не могу получить функцию curve_fit работать больше:
#defining function of the binding model
def binding_model(Mt,Xt,Vcell,Ka,n,dH):
return (n*Mt*dH*Vcell/2)*(1+(Xt/(Mt*n))+(1/(n*Ka*Mt)))-((1+(Xt/(n*Mt))+(1/(n*Ka*Mt)))**2-(4*Xt/(Mt*n))**.5)
#fitting molar enthalpy vs. molar ratio data with binding model
initial_paramaters=array([1,0,0])
parameters=curve_fit(binding_model,Mt,Xt,Vcell,peak_areas,initial_paramaters)
n=parameters[0]
Ka=parameters[1]
dH=parameters[2]
Ffit=binding_model(Mt,Xt,Ka,n,dH,Vcell)
Он теперь возвращает «curve_fit() принимает не более 5 аргументов (6) дал» ошибку.
molar_ratio, Mt и Xt - три массива, каждый из которых состоит из 41 значения. Vcell - это целое число, извлеченное из данных. Спасибо, что посмотрели!
Сделайте себе одолжение и разделить формулу. Используйте несколько временных переменных, предоставляя им соответствующие условия. Длинная формула, как и сейчас, является магнитом ошибки. – Davidmh
Как вы это понимаете? Единственными переменными являются Mt и Xt (оба списка равного количества массивов) и Vcell (целое число). Я не знаю, могу ли я сделать это более простым. Спасибо за совет! – MrPibbXIX
Пример: 'term1 = n * Mt * dH * Vcell/2; term2 = 1+ (Xt/(Mt * n); ... return term1 * term2 + ... 'И еще лучше, если вы можете дать' term1, term2 ... 'значимые имена (например, кинетический термин ...) – Davidmh