exponenta event banner

Выражение содержит 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 функции.

  • Проверьте, произошли ли выражения от деления на ноль или от сложения или умножения больших величин. Если да, удалите или исправьте выражения.

  • Обычно эти выражения появляются в результате ошибок. Однако иногда они возникают из-за плохого масштабирования. При необходимости разделите каждое релевантное выражение на достаточно большой скаляр, чтобы выражение больше не переполнялось, или используйте другую операцию масштабирования.

См. также

|

Связанные темы