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