Spec-Zone.ru › Octave 7

17.5 Функции служебного назначения

: ceil (x) ¶

Возвращает наименьшее целое число, не меньшее x.

Это эквивалентно округлению в сторону положительной бесконечности.

Если x комплексное, возвращает ceil (real (x)) + ceil (imag (x)) * I.

ceil ([-2.7, 2.7])
    ⇒ -2    3

См. также: floor, round, fix.

: fix (x) ¶

Отбрасывает дробную часть x и возвращает целую часть.

Это эквивалентно округлению к нулю. Если x комплексное, возвращает fix (real (x)) + fix (imag (x)) * I.

fix ([-2.7, 2.7])
   ⇒ -2    2

См. также: ceil, floor, round.

: floor (x) ¶

Возвращает наибольшее целое число, не большее x.

Это эквивалентно округлению в сторону отрицательной бесконечности. Если x комплексное, возвращает floor (real (x)) + floor (imag (x)) * I.

floor ([-2.7, 2.7])
     ⇒ -3    2

См. также: ceil, round, fix.

: round (x) ¶

Возвращает целое число, ближайшее к x.

Если x комплексное, возвращает round (real (x)) + round (imag (x)) * I. Если есть два ближайших целых числа, возвращается то, которое дальше от нуля.

round ([-2.7, 2.7])
     ⇒ -3    3

См. также: ceil, floor, fix, roundb.

: roundb (x) ¶

Возвращает целое число, ближайшее к x. Если есть два ближайших целых числа, возвращается четное (округление по правилам банковского округления).

Если x комплексное, возвращает roundb (real (x)) + roundb (imag (x)) * I.

См. также: round.

: max (x) ¶
: max (x, [], dim) ¶
: [w, iw] = max (x) ¶
: max (x, y) ¶

Находит максимальные значения в массиве x.

Для векторного аргумента возвращает максимальное значение. Для матричного аргумента возвращает строковый вектор с максимальным значением каждого столбца. Для многомерного массива, max выполняется по первому неединичному измерению.

Если необязательный третий аргумент dim присутствует, выполняется по этому измерению. В этом случае второй аргумент игнорируется и должен быть установлен в пустую матрицу.

Для двух входных данных (x и y) возвращает попарный максимум в соответствии с правилами векторной обработки.

Таким образом,

max (max (x))

возвращает наибольший элемент 2-мерной матрицы x, и

max (2:5, pi)
    ⇒  3.1416  3.1416  4.0000  5.0000

сравнивает каждый элемент диапазона 2:5 с pi, и возвращает строковый вектор максимальных значений.

Для комплексных аргументов для сравнения используются значения модулей элементов. Если модули совпадают, то результаты упорядочиваются по углу фазы в диапазоне (-π, π]. Следовательно,

max ([-1 i 1 -i])
    ⇒ -1

потому что все элементы имеют модуль 1, но -1 имеет наибольший угол фазы со значением π.

Если функция вызывается с одним входным и двумя выходными аргументами, max также возвращает первый индекс максимального значения(й). Таким образом,

[x, ix] = max ([1, 3, 5, 2, 5])
    ⇒  x = 5
        ix = 3

См. также: min, cummax, cummin.

: min (x) ¶
: min (x, [], dim) ¶
: [w, iw] = min (x) ¶
: min (x, y) ¶

Находит минимальные значения в массиве x.

Для векторного аргумента возвращает минимальное значение. Для матричного аргумента возвращает строковый вектор с минимальным значением каждого столбца. Для многомерного массива, min выполняется по первому неединичному измерению.

Если необязательный третий аргумент dim присутствует, выполняется по этому измерению. В этом случае второй аргумент игнорируется и должен быть установлен в пустую матрицу.

Для двух входных данных (x и y) возвращает попарный минимум в соответствии с правилами векторной обработки.

Таким образом,

min (min (x))

возвращает наименьший элемент 2-мерной матрицы x, и

min (2:5, pi)
    ⇒  2.0000  3.0000  3.1416  3.1416

сравнивает каждый элемент диапазона 2:5 с pi, и возвращает строковый вектор минимальных значений.

Для комплексных аргументов для сравнения используются значения модулей элементов. Если модули совпадают, то результаты упорядочиваются по углу фазы в диапазоне (-π, π]. Следовательно,

min ([-1 i 1 -i])
    ⇒ -i

потому что все элементы имеют модуль 1, но -i имеет наименьший угол фазы со значением -π/2.

Если функция вызывается с одним входным и двумя выходными аргументами, min также возвращает первый индекс минимального значения(й). Таким образом,

[x, ix] = min ([1, 3, 0, 2, 0])
    ⇒  x = 0
        ix = 3

См. также: max, cummin, cummax.

: cummax (x) ¶
: cummax (x, dim) ¶
: [w, iw] = cummax (…) ¶

Возвращает накопительные максимальные значения вдоль измерения dim.

Если dim не указан, по умолчанию выполняется операция по столбцам. Например:

cummax ([1 3 2 6 4 5])
   ⇒  1  3  3  6  6  6

Если функция вызывается с двумя выходными аргументами, также возвращается индекс максимального значения.

[w, iw] = cummax ([1 3 2 6 4 5])
⇒
w =  1  3  3  6  6  6
iw = 1  2  2  4  4  4

См. также: cummin, max, min.

: cummin (x) ¶
: cummin (x, dim) ¶
: [w, iw] = cummin (x) ¶

Возвращает накопительные минимальные значения вдоль измерения dim.

Если dim не указан, по умолчанию выполняется операция по столбцам. Например:

cummin ([5 4 6 2 3 1])
   ⇒  5  4  4  2  2  1

Если функция вызывается с двумя выходными аргументами, также возвращается индекс минимального значения.

[w, iw] = cummin ([5 4 6 2 3 1])
⇒
w =  5  4  4  2  2  1
iw = 1  2  2  4  4  6

См. также: cummax, min, max.

: hypot (x, y) ¶
: hypot (x, y, z, …) ¶

Вычисляет элементно квадратный корень из суммы квадратов x и y.

Это эквивалентно sqrt (x.^2 + y.^2), но вычисляется таким образом, чтобы избежать переполнения для больших значений x или y.

hypot также может быть вызван с более чем 2 аргументами; в этом случае аргументы накапливаются слева направо:

hypot (hypot (x, y), z)
hypot (hypot (hypot (x, y), z), w), etc.
: dx = gradient (m) ¶
: [dx, dy, dz, …] = gradient (m) ¶
: […] = gradient (m, s) ¶
: […] = gradient (m, x, y, z, …) ¶
: […] = gradient (f, x0) ¶
: […] = gradient (f, x0, s) ¶
: […] = gradient (f, x0, x, y, …) ¶

Вычислить градиент выборочных данных или функции.

Если m является вектором, вычислить одномерный градиент m. Если m является матрицей, градиент вычисляется для каждой размерности.

[dx, dy] = gradient (m) вычисляет одномерный градиент по направлениям x и y, если m является матрицей. Дополнительные возвращаемые аргументы могут быть использованы для многомерных матриц.

Постоянный интервал между двумя точками может быть задан параметром s. Если s является скаляром, он предполагается как интервал для всех измерений. В противном случае отдельные значения интервала могут быть заданы аргументами x, … Аргументы со скалярными значениями задают равномерный интервал. Векторные значения для аргументов x, … задают координаты для данного измерения. Длина должна совпадать с соответствующей размерностью m.

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

y'(i) = 1/(x(i+1)-x(i-1)) * (y(i-1)-y(i+1)).

Если первый аргумент f является функцией-обработчиком, градиент функции в точках x0 аппроксимируется с помощью центральной разницы. Например, gradient (@cos, 0) аппроксимирует градиент косинусной функции в точке x0 = 0. Как и с выборочными данными, значения интервала между точками, из которых оценивается градиент, можно задать с помощью аргументов s или dx, dy, … По умолчанию используется интервал 1.

См. также: diff, del2.

: dot (x, y, dim) ¶

Вычислить скалярное произведение двух векторов.

Если x и y являются матрицами, вычислить скалярные произведения вдоль первой неединичной размерности.

Если задан необязательный аргумент dim, вычислить скалярные произведения вдоль этой размерности.

Примечание к реализации: Это эквивалентно sum (conj (X) .* Y, dim), но избегает формирования временной матрицы и быстрее. Когда X и Y являются столбцами векторов, результат эквивалентен X' * Y. Хотя dot определен для целочисленных матриц, результат может отличаться от ожидаемого из-за ограниченного диапазона целочисленных объектов.

См. также: cross, divergence.

: cross (x, y) ¶
: cross (x, y, dim) ¶

Вычислить векторное произведение двух 3-мерных векторов x и y.

Если x и y являются матрицами, векторное произведение применяется вдоль первой размерности с тремя элементами.

Необязательный аргумент dim принуждает вычисление векторного произведения вдоль заданной размерности.

Пример кода:

cross ([1, 1, 0], [0, 1, 1])
  ⇒
       1   -1   1

См. также: dot, curl, divergence.

: div = divergence (x, y, z, fx, fy, fz) ¶
: div = divergence (fx, fy, fz) ¶
: div = divergence (x, y, fx, fy) ¶
: div = divergence (fx, fy) ¶

Вычислить дивергенцию векторного поля, заданного массивами fx, fy и fz или fx, fy соответственно.

d               d               d
div F(x,y,z)  =   -- F(x,y,z)  +  -- F(x,y,z)  +  -- F(x,y,z)
                  dx              dy              dz

Координаты векторного поля могут быть заданы аргументами x, y, z или x, y соответственно.

См. также: curl, gradient, del2, dot.

: [cx, cy, cz, v] = curl (x, y, z, fx, fy, fz) ¶
: [cz, v] = curl (x, y, fx, fy) ¶
: […] = curl (fx, fy, fz) ¶
: […] = curl (fx, fy) ¶
: v = curl (…) ¶

Вычислить ротор векторного поля, заданного массивами fx, fy и fz или fx, fy соответственно.

/ d         d       d         d       d         d     \
curl F(x,y,z)  =  | -- Fz  -  -- Fy,  -- Fx  -  -- Fz,  -- Fy  -  -- Fx |
                  \ dy        dz      dz        dx      dx        dy    /

Координаты векторного поля могут быть заданы аргументами x, y, z или x, y соответственно. v вычисляет скалярную составляющую вектора угловой скорости в направлении оси z для двумерного ввода. Для трехмерного ввода скалярное вращение вычисляется в каждой точке сетки в направлении векторного поля в этой точке.

См. также: divergence, gradient, del2, cross.

: L = del2 (M) ¶
: L = del2 (M, h) ¶
: L = del2 (M, dx, dy, …) ¶

Вычислить дискретного оператора Лапласа.

Для 2-мерной матрицы M это определяется как

1    / d^2            d^2         \
L  = --- * | ---  M(x,y) +  ---  M(x,y) |
      4    \ dx^2           dy^2        /

Для N-мерных массивов сумма в скобках расширяется, чтобы включать вторые производные по дополнительным высшим измерениям.

Интервал между точками оценки может быть задан h, который является скаляром, определяющим равномерный интервал во всех измерениях. В качестве альтернативы, интервал в каждом измерении может быть задан отдельно dx, dy и т. д. Скалярный аргумент интервала задает равномерный интервал, а векторный аргумент может быть использован для указания переменного интервала. Длина векторов интервала должна соответствовать соответствующему измерению M. Значение интервала по умолчанию равно 1.

Измерения с менее чем 3 точками данных пропускаются. Точки на границе вычисляются из линейной экстраполяции внутренних точек.

Пример: Вторая производная от 2*x^3

f = @(x) 2*x.^3;
dd = @(x) 12*x;
x = 1:6;
L = 4*del2 (f(x));
assert (L, dd (x));

См. также: gradient, diff.

: factorial (n) ¶

Возвращает факториал n, где n — действительное неотрицательное целое число.

Если n является скаляром, это эквивалентно prod (1:n). Для векторных или матричных аргументов возвращает факториал каждого элемента в массиве.

Для нецелых значений см. обобщенную функцию факториала gamma. Обратите внимание, что функция факториала быстро растёт, и даже с числами двойной точности переполнение произойдёт, если n > 171. В таких случаях используйте gammaln.

См. также: prod, gamma, gammaln.

: pf = factor (q) ¶
: [pf, n] = factor (q) ¶

Возвращает разложение числа q на простые множители.

Разложение на простые множители определяется как prod (pf) == q , где каждый элемент pf — простое число. Если q == 1, возвращается 1. Выходной параметр pf имеет тот же числовой тип, что и входной.

При использовании двух выходных параметров возвращаются уникальные простые множители pf и их кратности. То есть, prod (pf .^ n) == q.

Примечание по реализации: вход q должен быть меньше flintmax , если вход — число с плавающей запятой (double или single).

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

: g = gcd (a1, a2, …) ¶
: [g, v1, …] = gcd (a1, a2, …) ¶

Вычисляет наибольший общий делитель (НОД) чисел a1, a2, ….

Все аргументы должны иметь одинаковый размер или быть скалярными. Для массивов НОД вычисляется для каждого элемента индивидуально. Все элементы должны быть обычными или гауссовыми (комплексными) целыми числами. Обратите внимание, что для гауссовых целых чисел НОД уникален только с точностью до множителя фазы (умножение на 1, -1, i или -i), поэтому возвращается произвольный НОД из четырёх возможных.

Дополнительные выходные аргументы v1, … содержат целочисленные векторы такие, что

g = v1 .* a1 + v2 .* a2 + …

Пример кода:

gcd ([15, 9], [20, 18])
   ⇒  5  9

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

: lcm (x, y) ¶
: lcm (x, y, …) ¶

Вычисляет наименьшее общее кратное (НОК) чисел x и y или списка всех аргументов.

Все элементы должны быть числовыми и иметь одинаковый размер или быть скалярными.

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

: rem (x, y) ¶

Возвращает остаток от деления x / y.

Остаток вычисляется по формуле

x - y .* fix (x ./ y)

Сообщение об ошибке выводится, если размерности аргументов не совпадают или один из аргументов является комплексным.

Примечания по программированию: при вычислениях с числами с плавающей запятой (double, single), значения, отличающиеся от целого числа на несколько eps, будут округляться до этого целого числа для совместимости с MATLAB. Любые целые числа с плавающей запятой, превышающие flintmax (2^53 для double), не будут вычисляться корректно. Для больших целочисленных значений преобразуйте вход в uint64 перед вызовом этой функции.

По соглашению,

rem (x, 0) = NaN  if x is a floating point variable
rem (x, 0) = 0    if x is an integer variable
rem (x, y)  returns a value with the signbit from x

Для противоположных соглашений см. функцию mod. В общем случае, rem лучше всего подходит для вычисления остатка от деления двух положительных чисел. Для отрицательных чисел или при периодических значениях mod является лучшим выбором.

См. также: mod.

: mod (x, y) ¶

Вычисляет остаток от деления x на y.

По сути, это задаётся формулой

x - y .* floor (x ./ y)

и записывается так, чтобы возвращался корректный остаток для целочисленных типов. Эта функция корректно обрабатывает отрицательные значения. То есть, mod (-1, 3) равно 2, а не -1, в отличие от rem (-1, 3).

Ошибка возникает, если размерности аргументов не совпадают или один из аргументов является комплексным.

Примечания по программированию: при вычислениях с числами с плавающей запятой (double, single), значения, отличающиеся от целого числа на несколько eps, будут округляться до этого целого числа для совместимости с MATLAB. Любые целые числа с плавающей запятой, превышающие flintmax (2^53 для double), не будут вычисляться корректно. Для больших целочисленных значений преобразуйте вход в uint64 перед вызовом этой функции.

По соглашению,

mod (x, 0) = x
mod (x, y)      returns a value with the signbit from y

Для противоположных соглашений см. функцию rem. В общем случае, mod лучше, чем rem при использовании отрицательных чисел или при периодических значениях.

См. также: rem.

: p = primes (n) ¶

Возвращает все простые числа до n.

Тип выходных данных (double, single, uint32 и т.д.) совпадает с типом входных данных n. Используется алгоритм Решето Эратосфена.

Примечание: для конкретного числа n простых чисел вызовите list_primes (n). В качестве альтернативы, вызовите primes (n*log (k*n))(1:n), где k примерно равно 5 или 6. Это работает, потому что расстояние между простыми числами пропорционально логарифму простого числа в среднем. При интегрировании, существует примерно n простых чисел меньше n * log (5*n).

См. также: list_primes, isprime.

: list_primes () ¶
: list_primes (n) ¶

Выводит первые n простых чисел.

Если n не указано, выводятся первые 25 простых чисел.

См. также: primes, isprime.

: sign (x) ¶

Вычисляет функцию знака.

Она определяется как

-1, x < 0;
sign (x) =  0, x = 0;
            1, x > 0.

Для комплексных аргументов, sign возвращает x ./ abs (x).

Обратите внимание, что sign (-0.0) равно 0. Хотя IEEE 754 позволяет нулю иметь знак, 0.0 и -0.0 сравниваются как равные. Если вам необходимо проверить, имеет ли ноль знак, используйте функцию signbit.

См. также: signbit.

: signbit (x) ¶

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

Это поведение согласуется с другими логическими функциями. Смотрите Логические значения. Поведение отличается от функции языка C, которая возвращает ненулевое значение, если бит знака установлен.

Это не то же самое, что x < 0.0, так как IEEE 754 позволяет нулю иметь знак. Сравнение -0.0 < 0.0 ложно, но signbit (-0.0) вернёт ненулевое значение.

См. также: sign.

© 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/v7.2.0/Utility-Functions.html

Spec-Zone.ru

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