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

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

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

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

|

Похожие темы