1 <?xml version="1.0" encoding="UTF-8"?>
3 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4 * Copyright (C) 2012 - 2016 - Scilab Enterprises
5 * Copyright (C) 2020 - Samuel GOUGEON
7 * This file is hereby licensed under the terms of the GNU GPL v2.0,
8 * pursuant to article 5.3.4 of the CeCILL v.2.1.
9 * This file was originally licensed under the terms of the CeCILL v2.1,
10 * and continues to be available under such terms.
11 * For more information, see the COPYING file which you should have received
12 * along with this program.
15 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
16 xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML"
17 xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org"
18 xml:lang="ru" xml:id="power">
20 <refname>возведение в степень</refname>
21 <refpurpose>операция возведения в степень (^, .^)</refpurpose>
24 <title>Синтаксис</title>
32 <title>Аргументы</title>
37 скаляр, вектор или матрица кодированных целых чисел, десятичных или
38 комплексных чисел, полиномов или дробно-рациональных выражений.
45 скаляр, вектор или матрица кодированных целых чисел, десятичных или
52 Если операндом являются кодированные целые числа, то другие числа могут
53 быть только кодированными целыми числами или вещественными числами.
56 Если <varname>A</varname> является полиномами или дробно-рациональными
57 выражениями, то <varname>b</varname> может быть только одиночным десятичным
58 (положительным или отрицательным) числом.
62 <title>Описание</title>
64 <title>.^ поэлементное возведение в степень</title>
66 Если <varname>A</varname> или <varname>b</varname> скаляр,
67 то он сначала реплицируется до размера другого с помощью
68 <literal>A*ones(b)</literal> или <literal>b*ones(A)</literal>.
69 В противном случае <varname>A</varname> и <varname>b</varname>
70 должны быть одинакового размера.
73 Затем для каждого элемента с индексом <literal>i</literal>
74 вычисляется <literal>t(i) = A(i)^b(i)</literal>.
78 <title>^ матричное возведение в степень</title>
80 Оператор <literal>^</literal> эквивалентен поэлементному возведению
81 в степень <literal>.^</literal> в следующих случаях:
84 <varname>A</varname> скаляр, а <varname>b</varname> вектор;
87 <varname>A</varname> вектор, а <varname>b</varname> скаляр.
90 В противном случае <varname>A</varname> либо <varname>b</varname>
91 должен быть скаляром, а другой должен быть квадратной матрицей:
95 если <varname>A</varname> скаляр, а <varname>b</varname>
96 квадратная матрица, то <literal>A^b</literal> является
97 матрицей <literal>expm(log(A) * b)</literal>;
102 если <varname>A</varname> квадратная матрица, а <varname>b</varname>
103 скаляр, то <literal>A^b</literal> является матрицей
104 <varname>A</varname> в степени <varname>b</varname>.
111 <title>Примечания</title>
115 Для квадратных матриц <varname>A</varname>, <literal>A^p</literal>
116 вычисляется через последовательное перемножение матриц, если
117 <literal>p</literal> является положительным числом, а иначе -
118 через диагонализацию (см. примечания №2 и №3 ниже).
123 Если <varname>A</varname> квадратная и эрмитова матрица, а
124 <literal>p</literal> нецелый скаляр, то <literal>A^p</literal>
128 <code>A^p = u*diag(diag(s).^p)*u'</code> (для вещественной
129 матрицы <varname>A</varname> во внимание принимается только
130 вещественная часть ответа).
133 <literal>u</literal> и <literal>s</literal> определяются как
134 <code>[u,s] = schur(A)</code> .
139 Если <varname>A</varname> не является эрмитовой матрицей,
140 а <literal>p</literal> является нецелым скаляром, то
141 <literal>A^p</literal> вычисляется как:
144 <code>A^p = v*diag(diag(d).^p)*inv(v)</code> (для вещественной
145 матрицы <varname>A</varname> во внимание принимается только
146 вещественная часть ответа).
149 <literal>d</literal> и <literal>v</literal> определяются
150 как <code>[d,v] = bdiag(A+0*%i)</code>.
155 Если <varname>A</varname> и <literal>p</literal> вещественные
156 или комплексные числа, то <literal>A^p</literal> является
157 <emphasis>главным значением</emphasis>, определяемым как
160 <code>A^p = exp(p*log(A))</code>
163 (или <code>A^p = exp(p*(log(abs(A))+ %i*atan(imag(A)/real(A))))</code> ).
168 Если <varname>A</varname> является квадратной матрице, а
169 <literal>p</literal> вещественным или комплексным числом, то
170 <literal>A.^p</literal> является <emphasis>главным значением</emphasis>
174 <code>A.^p = exp(p*log(A))</code> (то же самое, что и в случае 4 выше).
179 операторы <literal>**</literal> и <literal>^</literal> являются
186 Возведение в степень в Scilab является оператором с ассоциативностью
187 справа, в отличие от Matlab® и Octave.
188 Например <literal>2^3^4</literal> в Scilab равно <literal>2^(3^4)</literal>,
189 а в Matlab® и Octave равно <literal>(2^3)^4</literal>.
195 <title>Примеры</title>
196 <programlisting role="example"><![CDATA[
211 <refsection role="see also">
212 <title>Смотрите также</title>
213 <simplelist type="inline">
215 <link linkend="exp">exp</link>
218 <link linkend="expm">expm</link>
221 <link linkend="hat">крышечка</link>
224 <link linkend="inv">inv</link>
228 <refsection role="history">
229 <title>История</title>
232 <revnumber>6.0.0</revnumber>
234 С десятичным или комплексным числами <literal>scalar ^ squareMat</literal>
235 теперь даёт <literal>expm(log(scalar)*squareMat)</literal> вместо
236 <literal>scalar .^ squareMat</literal>.