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
. Сделать так:
Ищите эти выражения при помощи show
или write
функции.
Проверяйте, прибыли ли выражения из деления на нуль или из сложения или умножения больших количеств. Если так, устраните или откорректируйте выражения.
Обычно, эти выражения появляются как результат ошибок. Однако иногда они являются результатом плохого масштабирования. При необходимости разделите каждое соответствующее выражение на достаточно большой скаляр так, чтобы выражение больше не переполнялось, или используйте другую операцию масштабирования.