Ограничение на параметры в lmfit - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь подогнать 3 пика, используя lmfit с профилем перекоса Voigt (это не так важно для моего вопроса). Я хочу установить ограничение на центры пиков в форме:

peak1 = SkewedVoigtModel(prefix='sv1_')
pars.update(peak1.make_params())
pars['sv1_center'].set(x)

peak2 = SkewedVoigtModel(prefix='sv2_')
pars.update(peak2.make_params())
pars['sv2_center'].set(1000+x)

peak3 = SkewedVoigtModel(prefix='sv3_')
pars.update(peak3.make_params())
pars['sv3_center'].set(2000+x)

По сути, я хочу, чтобы они были на расстоянии 1000 друг от друга, но мне нужно соответствовать фактическому сдвигу, х. Я знаю, что могу заставить некоторые параметры быть равными, используя pars['sv2_center'].set(expr='sv1_center'), но мне нужно было бы pars['sv2_center'].set(expr='sv1_center'+1000) (что не работает так). Как я могу достичь того, что мне нужно? Спасибо!

1 Ответ

0 голосов
/ 13 апреля 2020

Просто сделайте:

pars['sv2_center'].set(expr='sv1_center+1000') 
pars['sv3_center'].set(expr='sv1_center+2000') 

Выражение ограничения - это выражение Python, которое будет оцениваться каждый раз, когда ограниченный параметр должен получить свое значение.

...