Будьте осторожны при написании ваших объективных и ограничительных функций. Промежуточные итерации могут привести к точкам, которые недопустимы (не удовлетворяют ограничениям). Если вы записываете целевые или ограничительные функции, которые предполагают допустимость, эти функции могут ошибиться или дать неожиданные результаты.
Например, если взять квадратный корень или логарифм x, и x < 0, результат не является реальным. Можно попытаться избежать этой ошибки, задав 0 как нижняя граница для x. Тем не менее, промежуточная итерация может нарушить эту границу.
Некоторые алгоритмы решателя удовлетворяют связанным ограничениям при каждой итерации:
fmincon interior-point, sqp, и trust-region-reflective алгоритмы
lsqcurvefit trust-region-reflective алгоритм
lsqnonlin trust-region-reflective алгоритм
fminbnd
Примечание
Если вы задаете нижнюю границу, равную верхней, итерации могут нарушить эти ограничения.
Следующие решатели и алгоритмы могут нарушать ограничения в промежуточных итерациях:
fmincon active-set алгоритм
fgoalattain решатель
fminimax решатель
fseminf решатель