возведение в степень операция возведения в степень (^, .^)

## Синтаксис

                t = A ^ b
                t = A ** b
                t = A .^ b

## Аргументы

A, t
  скаляр, вектор или матрица кодированных целых чисел, десятичных или комплексных чисел, полиномов или дробно-рациональных выражений.

b
  скаляр, вектор или матрица кодированных целых чисел, десятичных или комплексных чисел.

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

Если `A` является полиномами или дробно-рациональными выражениями, то `b` может быть только одиночным десятичным (положительным или отрицательным) числом.

## Описание

### .^ поэлементное возведение в степень

Если `A` или `b` скаляр, то он сначала реплицируется до размера другого с помощью `A*ones(b)` или `b*ones(A)`. В противном случае `A` и `b` должны быть одинакового размера.

Затем для каждого элемента с индексом `i` вычисляется `t(i) = A(i)^b(i)`.

### ^ матричное возведение в степень

Оператор `^` эквивалентен поэлементному возведению в степень `.^` в следующих случаях:

- `A` скаляр, а `b` вектор;
- `A` вектор, а `b` скаляр.

В противном случае `A` либо `b` должен быть скаляром, а другой должен быть квадратной матрицей:

- если `A` скаляр, а `b` квадратная матрица, то `A^b` является матрицей `expm(log(A) * b)`;

- если `A` квадратная матрица, а `b` скаляр, то `A^b` является матрицей `A` в степени `b`.

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

1. Для квадратных матриц `A`, `A^p` вычисляется через последовательное перемножение матриц, если `p` является положительным числом, а иначе - через диагонализацию (см. примечания №2 и №3 ниже).

2. Если `A` квадратная и эрмитова матрица, а `p` нецелый скаляр, то `A^p` вычисляется как:

   `A^p = u*diag(diag(s).^p)*u'` (для вещественной матрицы `A` во внимание принимается только вещественная часть ответа).

   `u` и `s` определяются как `[u,s] = schur(A)` .

3. Если `A` не является эрмитовой матрицей, а `p` является нецелым скаляром, то `A^p` вычисляется как:

   `A^p = v*diag(diag(d).^p)*inv(v)` (для вещественной матрицы `A` во внимание принимается только вещественная часть ответа).

   `d` и `v` определяются как `[d,v] = bdiag(A+0*%i)`.

4. Если `A` и `p` вещественные или комплексные числа, то `A^p` является главным значением, определяемым как

   `A^p = exp(p*log(A))`

   (или `A^p = exp(p*(log(abs(A))+ %i*atan(imag(A)/real(A))))` ).

5. Если `A` является квадратной матрице, а `p` вещественным или комплексным числом, то `A.^p` является главным значением вычисленным как:

   `A.^p = exp(p*log(A))` (то же самое, что и в случае 4 выше).

6. операторы `**` и `^` являются синонимами.

Возведение в степень в Scilab является оператором с ассоциативностью справа, в отличие от Matlab® и Octave. Например `2^3^4` в Scilab равно `2^(3^4)`, а в Matlab® и Octave равно `(2^3)^4`.

## Примеры

    A = [1 2 ; 3 4];
    A ^ 2.5,
    A .^ 2.5
    (1:10) ^ 2
    (1:10) .^ 2

    A ^ %i
    A .^ %i
    exp(%i*log(A))

    s = poly(0,'s')
    s ^ (1:10)

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

- exp
- expm
- крышечка
- inv

## История

6.0.0 С десятичным или комплексным числами `scalar ^ squareMat` теперь даёт `expm(log(scalar)*squareMat)` вместо `scalar .^ squareMat`.