Inf
или NaN
Функции моделирования оптимизации не позволяют вам задавать комплекс, Inf
или значения NaN
. Однако Inf
или выражения NaN
могут возникнуть во время обычных операций. Часто, эти выражения приводят к ошибочным решениям.
Выражения оптимизации, содержащие Inf
или NaN
, не могут быть отображены. Например, самое большое вещественное число в арифметике двойной точности о 1.8e308
. Таким образом, 2e308
переполняется к Inf
.
x = optimvar('x');
y = 1e308;
expr = 2*x*y
expr = OptimizationExpression Expression contains Inf or NaN.
Точно так же, потому что Inf - Inf = NaN
, следующее выражение не может быть отображено.
expr = 2*x*y - 3*x*y
expr = OptimizationExpression Expression contains Inf or NaN.
Если какое-либо из ваших выражений оптимизации содержит Inf
или NaN
, попытайтесь устранить эти значения прежде, чем вызвать solve
. Сделать так:
Ищите эти выражения при помощи showexpr
, showconstr
, showproblem
или эквивалентных функций write
.
Проверяйте, прибыли ли выражения из деления на нуль или из сложения или умножения больших количеств. Если так, устраните или исправьте выражения.
Обычно, эти выражения появляются как результат ошибок. Однако иногда они являются результатом плохого масштабирования. При необходимости разделите каждое соответствующее выражение на достаточно большой скаляр так, чтобы выражение больше не переполнялось, или используйте другую операцию масштабирования.
showconstr
| showexpr
| showproblem
| writeconstr
| writeexpr
| writeproblem