#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)')
То есть ограничение означает, что один из ваших параметров фактически не изменяется независимо, а определяется ограничением и значениями других параметров.