Как ограничить умножение определенных параметров до постоянного значения в lmfit?

#constraints #lmfit

Вопрос:

У меня есть модель с несколькими параметрами, скажем, «A», «B» и «C». Все они заданы с некоторыми минимальными и максимальными границами, мотивированными их представлением физических величин.

Кроме того, мне нужно было бы ограничить их продукт определенным значением (скажем, 1), таким как «A» * «B» * «C» == 1.

Я пытался:

 p.add('mult_constraint", expr = 'A*B*C==1)
 

,но это приводит к ошибке:
Ошибка имени: в expr='<объект ast.Module в 0x0000014A546EAFD0>’

Как должно быть написано подобное ограничение?

Комментарии:

1. Каков контекст? Какой язык программирования и/или система, среда? Нам нужна дополнительная информация, пожалуйста.

Ответ №1:

Я думаю, что вы хотите определить три параметра A B , и C , с ограничением, что ABC=1 . Это может выглядеть так:

  import lmfit
 params = lmfit.Parameters()
 params.add('A', value=0.75, min=0)
 params.add('B', value=5.50, min=0.25)
 params.add('C', expr='1/(A*B)')
 

То есть ограничение означает, что один из ваших параметров фактически не изменяется независимо, а определяется ограничением и значениями других параметров.