Spec-Zone.ru › Octave 6

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.

END_OF_DOCUMENT_MARKER
: 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, …)

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

Для двумерной матрицы 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 (9.0072e+15), чтобы разложение было корректным.

См. также: 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. Используется алгоритм Решето Эратосфена.

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

См. также list_primes если вам нужно определенное количество n простых чисел.

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

: list_primes ()

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

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

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

: 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)

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

Это поведение согласуется с другими логическими функциями. См. Логические значения. Поведение отличается от функции языка 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/v6.4.0/Utility-Functions.html

Spec-Zone.ru

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