# cumprod

произведение элементов массива с накоплением

## Последовательность вызова

    y=cumprod(x)

    y=cumprod(x,orientation)

    y=cumprod(x,outtype)

    y=cumprod(x,orientation,outtype)

## Аргументы

x

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

orientation

  ориентация, она может быть:

  - строкой с возможными значениями: `"*"`, `"r"`, `"c"` или `"m"`

  - номером с положительным целым значением

outtype

  тип на выходе: строка с возможными значениями: `"native"` или `"double"`.

y

  скаляр или массив

## Описание

Для массива `x`, `y=cumprod(x)` возвращает скаляр `y`, представляющий произведение всех элементов `x` с накоплением.

`y=cumprod(x,orientation)` возвращает в `y` произведение элементов `x` с накоплением по заданной размерности `orientation`:

- если `orientation` равна 1 или "r", то

  y(\mathbf{l},j) = \prod_{\mathbf{i}=1}^l x(\mathbf{i},j)

  или

  y(\mathbf{l},j,k,\ldots) = \prod_{\mathbf{i}=1}^l x(\mathbf{i},j,k,\ldots)

- если `orientation` равна 2 или "c", то:

  y(i,\mathbf{l}) = \prod_{\mathbf{j}=1}^l x(i,{\mathbf{j})

  или

  y(i,\mathbf{l},k,\ldots) = \prod_{\mathbf{j}=1}^l x(i,\mathbf{j},k,\ldots)

- если `orientation` равна n, то

  y(i_1,\ldots,i_{n-1},\mathbf{l},i_{n+1},\ldots) = \prod_{\mathbf{i_n}=1}^l x(i_1,\ldots,i_{n-1},\mathbf{i_n},i_{n+1},\ldots)

- `y=cumprod(x,"*")` эквивалентно `y=cumprod(x)`

- `y=cumprod(x,"m")` эквивалентно `y=cumprod(x,orientation)`, где `orientation` является индексом первой размерности `x`, которая больше 1. Эта опция используется для совместимости с Matlab'ом.

Аргумент `outtype` правила, по которым производится произведение:

- Для массивов чисел с плавающей запятой, полиномов, рациональных дробей вычисление всегда делается через вычисления с плавающей запятой. Опции `"double"` и `"native"` ("естественное") эквивалентны.

- Для массивов целых чисел:

  если `outtype="native"` ("естественное"), то вычисление делается через целочисленные вычисления (по модулю 2^b, где b - число используемых битов);

  если `outtype="double"`, то вычисление делается через вычисления с плавающей запятой.

  Значение по умолчанию `outtype="native"`.

- Для массивов логических значений:

  если `outtype="native"` ("естественное"), то вычисления делаются с помощью булевой алгебры (* заменяется на &),

  если `outtype="double"`, то вычисление делается через вычисления с плавающей запятой (значения %t заменяются на 1, а значения %f - на 0).

  Значение по умолчанию `outtype="double"`.

## Примечание

Эта функция применяется с аналогичными правилами к разряжённым матрицам и гиперматрицам.

## Примеры

    A=[1,2;3,4];
    cumprod(A)
    cumprod(A,1)

    I=uint8([2 95 103;254 9 0])
    cumprod(I) //естественное вычисление
    cumprod(I,"double")
    cumprod(I,2,"double")

    s=poly(0,"s");
    P=[s,%i+s;s^2,1];
    cumprod(P),
    cumprod(P,2)

    B=[%t %t %f %f];
    cumprod(B) //вычисление с плавающей запятой
    cumprod(B,"native") //аналогично and(B)

## Смотрите также

- prod
- cumsum