подгонка кривой с помощью lmfit python

Я новичок в python и пытаюсь подогнать данные с помощью lmfit. Я слежу за учебником lmfit здесь: http://lmfit.github.io/lmfit-py/parameters.html, и это мой код (на основе кода, описанного в приведенной выше ссылке):

import numpy as np
import lmfit 
import matplotlib.pyplot as plt
from numpy import exp, sqrt, pi
from lmfit import minimize,Parameters,Parameter,report_fit

data=np.genfromtxt('test.txt',delimiter=',')

x=data[:,][:,0]
y=data[:,][:,1]

def fcn2fit(params,x,y):
    """model decaying sine wave, subtract data"""
    S1=params['S1'].value
    t0=params['t0'].value
    T1=params['T1'].value
    S2=params['S2'].value
    T2=params['T2'].value

    model = 1-(1-S1)*exp(-(x-t0)/T1)+S2*(1-exp(-(x-t0)/T2)
    return model - y  

params = Parameters()
params.add('S1', value=0.85, min=0.8, max=0.9)
params.add('t0', value=0.05, min=0.01, max=0.1)
params.add('T1', value=0.2, min=0.1, max=0.3)
params.add('S2', value=0.03, min=0.01, max=0.05)
params.add('T2', value=0.3, min=0.2, max=0.4)

result = minimize(fcn2fit, params, args=(x,y))
final = y + result.residual

report_fit (params)

try:
    import pylab
    pylab.plot(x,y, 'k+')
    pylab.plot(x,final, 'r')
    pylab.show()
except:
    pass

Проблема: он возвращает синтаксическую ошибку для строки return model-y

Буду признателен, если вы позволите мне выбрать правильное направление.


person A.E    schedule 25.04.2015    source источник


Ответы (2)


Я думаю, что в предыдущей строке есть проблема со скобками. Это приводит к включению возврата в формулу. Я думаю, что в конце есть а) отсутствует.

person jcoppens    schedule 25.04.2015

Вы забыли правую скобку ")" в предыдущей строке (результат = ...). Открывающая и закрывающая круглые скобки не сбалансированы, что приводит к синтаксической ошибке.

person manu190466    schedule 25.04.2015