【问题标题】:Constraint on parameters in lmfitlmfit 中的参数约束
【发布时间】:2020-04-13 06:28:23
【问题描述】:

我正在尝试使用 lmfit 拟合 3 个峰值,并使用倾斜的 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,但我需要适应实际的班次 x。我知道我可以使用pars['sv2_center'].set(expr='sv1_center') 强制某些参数相等,但我需要的是pars['sv2_center'].set(expr='sv1_center'+1000)(它不能像那样工作)。我怎样才能达到我所需要的?谢谢!

【问题讨论】:

    标签: python lmfit


    【解决方案1】:

    只要做:

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

    约束表达式是一个 Python 表达式,每次约束参数需要获取其值时都会对其求值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多