Spec-Zone.ru › Octave 5

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, выполняется вдоль этого измерения. В этом случае второй аргумент игнорируется и должен быть установлен в пустую матрицу.

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

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

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, выполняется вдоль этого измерения. В этом случае второй аргумент игнорируется и должен быть установлен в пустую матрицу.

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

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

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.

См. также: 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.

END_OF_DOCUMENT_MARKER
[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 простых чисел меньше, чем k*log (5*k).

См. также list_primes если вам нужно определённое число 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/v5.2.0/Utility-Functions.html

Spec-Zone.ru

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