Я хочу создавать более сложные/сложные модели из простых с помощью lmfit.
У меня есть две функции, например, например. гауссовский (норма к единице на пике) и лоренцев (норма к единице на пике) и хотите соответствовать, например. их линейная комбинация. Все еще добавляя к единству. Поэтому я мог бы написать новую функцию, например
def voigt(*all the parameters*, alpha)
return alpha*gaussian(...) + (1-alpha)*lorentzian(...)
но это не очень адаптивно. Поэтому я теперь делаю вместо этого:
mod = ConstantModel(prefix = 'a1_') + Model(gauss) + ConstantModel(prefix='a2_') * Model(lorentz)
pars = Parameters()
pars.add('a1_c', value = 1, min = 0, max = 1)
pars.add('a2_c', expr = '1-a1_c')
Все еще чувствует себя немного неуклюжим. Есть ли более элегантный способ?