exponenta event banner

Бесконечность и NaN

Бесконечность

MATLAB ® представляет бесконечность по специальному значениюInf. Бесконечность является результатом таких операций, как деление на ноль и переполнение, что приводит к слишком большим результатам для представления в виде обычных значений с плавающей запятой. MATLAB также предоставляет функцию с именем Inf возвращает арифметическое представление IEEE ® для положительной бесконечности в виде double скалярное значение.

Здесь показано несколько примеров операторов, возвращающих положительную или отрицательную бесконечность в MATLAB.

x = 1/0
x =
Inf

x = 1.e1000
x =
   Inf

x = exp(1000)
x =
   Inf

x = log(0)
x =
   -Inf

Используйте isinf для проверки того, что x - положительная или отрицательная бесконечность:

x = log(0);

isinf(x)
ans =
     1

NaN

MATLAB представляет значения, которые не являются вещественными или комплексными числами со специальным значением, называемым NaN, что означает «Не число». Выражения, такие как 0/0 и inf/inf результат в NaN, как и любые арифметические операции с участием NaN:

x = 0/0
x =

   NaN

Можно также создать NaNs по:

x = NaN;

whos x
  Name      Size                   Bytes  Class

  x         1x1                        8  double

NaN функция возвращает одно из арифметических представлений IEEE для NaN в качестве double скалярное значение. Точное битовое шестнадцатеричное представление этого NaN значение равно,

format hex
x = NaN

x =

   fff8000000000000

Всегда использовать isnan функция для проверки того, что элементы в массиве NaN:

isnan(x)
ans =

     1

MATLAB сохраняет статус «Не число» для альтернативы NaN представления и рассматривает все различные представления NaN эквивалентно. Однако в некоторых особых случаях (возможно, из-за аппаратных ограничений) MATLAB не сохраняет точную битовую комбинацию альтернативных NaN представления на протяжении всего расчета, и вместо этого использует каноническое NaN битовый шаблон, определенный выше.

Логические операции с NaN

Потому что два NaNs не равны друг другу, логические операции, включающие NaN всегда возвращать false, за исключением теста на неравенство, (NaN ~= NaN):

NaN > NaN
ans =
     0

NaN ~= NaN 
ans =
     1