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

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

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

Смотрите также

| | | | |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте