Spec-Zone.ru › Octave 6

4.8 Предикаты для числовых объектов

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

function a = abs (x)
  if (isreal (x))
    a = sign (x) .* x;
  elseif (iscomplex (x))
    a = sqrt (real(x).^2 + imag(x).^2);
  endif
endfunction

Ниже приведены функции для определения типа переменной.

: isnumeric (x)

Возвращает true, если x является числовым объектом, т.е. массивом целых, вещественных или комплексных чисел.

Массивы логических и символьных значений не считаются числовыми.

См. также: isinteger, isfloat, isreal, iscomplex, ischar, islogical, isstring, iscell, isstruct, isa.

: islogical (x)
: isbool (x)

Возвращает true, если x является логическим объектом.

См. также: ischar, isfloat, isinteger, isstring, isnumeric, isa.

: isfloat (x)

Возвращает true, если x является плавающей точкой числового объекта.

Объекты класса double или single являются объектами с плавающей точкой.

См. также: isinteger, ischar, islogical, isnumeric, isstring, isa.

: isreal (x)

Возвращает true, если x является матрицей или скаляром, не являющимся комплексным.

Для совместимости с MATLAB, это включает логические и символьные матрицы.

См. также: iscomplex, isnumeric, isa.

: iscomplex (x)

Возвращает true, если x является комплекснозначным числовым объектом.

См. также: isreal, isnumeric, ischar, isfloat, islogical, isstring, isa.

: ismatrix (x)

Возвращает true, если x является двумерным массивом.

Матрица — это объект с двумя измерениями (ndims (x) == 2) для которого size (x) возвращает [M, N] с неотрицательными M и N.

См. также: isscalar, isvector, iscell, isstruct, issparse, isa.

: isvector (x)

Возвращает true, если x является вектором.

Вектор — это двумерный массив, где одно из измерений равно 1 (либо 1xN, либо Nx1). Вследствие этого определения, массив 1x1 (скаляр) также является вектором.

См. также: isscalar, ismatrix, iscolumn, isrow, size.

: isrow (x)

Возвращает true, если x является строчным вектором.

Строчный вектор — это двумерный массив, для которого size (x) возвращает [1, N] с неотрицательным N.

См. также: iscolumn, isscalar, isvector, ismatrix, size.

: iscolumn (x)

Возвращает true, если x является столбцовым вектором.

Столбцовый вектор — это двумерный массив, для которого size (x) возвращает [N, 1] с неотрицательным N.

См. также: isrow, isscalar, isvector, ismatrix, size.

: isscalar (x)

Возвращает true, если x является скаляром.

Скаляр — это объект с двумя измерениями, для которого size (x) возвращает [1, 1].

См. также: isvector, ismatrix, size.

: issquare (x)

Возвращает true, если x является двумерным квадратным массивом.

Квадратный массив — это двумерный объект, для которого size (x) возвращает [N, N] , где N — неотрицательное целое число.

См. также: isscalar, isvector, ismatrix, size.

: issymmetric (A)
: issymmetric (A, tol)
: issymmetric (A, "skew")
: issymmetric (A, "skew", tol)

Возвращает true, если A является симметричной или кососимметричной матрицей с точностью, заданной tol.

По умолчанию точность равна нулю (используется более быстрый код).

Тип проверяемой симметрии может быть задан дополнительным входом "nonskew" (по умолчанию) для обычной симметрии или "skew" для кососимметрии.

Описание: Матрица является симметричной, если её транспонированная матрица равна исходной матрице: A == A.'. Если задана точность, симметрия определяется по norm (A - A.', Inf) / norm (A, Inf) < tol.

Матрица является кососимметричной, если её транспонированная матрица равна отрицанию исходной матрицы: A == -A.'. Если задана точность, кососимметрия определяется по norm (A + A.', Inf) / norm (A, Inf) < tol.

См. также: ishermitian, isdefinite.

: ishermitian (A)
: ishermitian (A, tol)
: ishermitian (A, "skew")
: ishermitian (A, "skew", tol)

Возвращает true, если A является эрмитовой или косоэрмитовой матрицей с точностью, заданной tol.

По умолчанию точность равна нулю (используется более быстрый код).

Тип проверяемой симметрии может быть задан дополнительным входом "nonskew" (по умолчанию) для обычной эрмитовой или "skew" для косоэрмитовой.

Описание: Матрица является эрмитовой, если её комплексно-сопряжённая транспонированная матрица равна исходной матрице: A == A'. Если задана точность, вычисление выполняется по norm (A - A', Inf) / norm (A, Inf) < tol.

Матрица является косоэрмитовой, если её комплексно-сопряжённая транспонированная матрица равна отрицанию исходной матрицы: A == -A'. Если задана точность, вычисление выполняется по norm (A + A', Inf) / norm (A, Inf) < tol.

См. также: issymmetric, isdefinite.

: isdefinite (A)
: isdefinite (A, tol)

Возвращает true, если A является симметричной положительно определённой матрицей с точностью, заданной tol.

Если tol опущена, используется точность 100 * eps * norm (A, "fro").

Описание: Положительно определённая матрица имеет все собственные значения, большие нуля. Положительно полуопределённая матрица имеет все собственные значения, больше или равные нулю. Матрица A очень вероятно будет положительно полуопределённой, если выполняются следующие два условия для достаточно малой точности tol.

isdefinite (A) ⇒ 0
isdefinite (A + 5*tol, tol) ⇒ 1

См. также: issymmetric, ishermitian.

: isbanded (A, lower, upper)

Возвращает true, если A является матрицей с элементами, ограниченными между lower диагоналями ниже главной диагонали и upper диагоналями выше главной диагонали.

lower и upper должны быть неотрицательными целыми числами.

См. также: isdiag, istril, istriu, bandwidth.

: isdiag (A)

Возвращает true, если A является диагональной матрицей.

См. также: isbanded, istril, istriu, diag, bandwidth.

: istril (A)

Возвращает true, если A является нижнетреугольной матрицей.

Нижнетреугольная матрица имеет ненулевые элементы только на главной диагонали и ниже.

См. также: istriu, isbanded, isdiag, tril, bandwidth.

: istriu (A)

Возвращает true, если A — верхнетреугольная матрица.

В верхнетреугольной матрице ненулевые элементы находятся только на главной диагонали и выше её.

См. также: isdiag, isbanded, istril, triu, bandwidth.

: isprime (x)

Возвращает логический массив, где значение true соответствует простым числам в элементах x, а false — нет.

Простое число по определению — это целое положительное число больше 1 (например, 2, 3, …), которое делится только на себя и на 1. Octave расширяет это определение, включая как отрицательные целые числа, так и комплексные значения. Отрицательное целое число является простым, если его положительный аналог является простым. Это эквивалентно isprime (abs (x)).

Если class (x) является комплексным, то простота проверяется в области гауссовых целых чисел (https://en.wikipedia.org/wiki/Gaussian_integer). Некоторые целые числа, не являющиеся комплексными, являются простыми в обычном смысле, но не в области гауссовых целых чисел. Например, 5 = (1+2i)*(1-2i) показывает, что 5 не является простым числом, потому что имеет делитель, отличный от себя и 1. Будьте осторожны при проверке комплексных и вещественных значений вместе в одной матрице.

Примеры:

isprime (1:6)
  ⇒  0  1  1  0  1  0
isprime ([i, 2, 3, 5])
  ⇒  0  0  1  0

Примечание по программированию: isprime подходит, если максимальное значение в x не слишком большое (< 1e15). Для больших значений следует использовать специализированный код факторизации.

Примечание по совместимости: MATLAB не расширяет определение простых чисел и выдаст ошибку, если на вход будут поданы отрицательные или комплексные значения.

См. также: primes, factor, gcd, lcm.

Если вместо того, чтобы узнавать свойства переменных, вы хотите узнать, какие переменные определены и получить другую информацию о рабочей области, обратитесь к разделу Состояние переменных.

© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v6.4.0/Predicates-for-Numeric-Objects.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API