Сообщество Engee

Степень, корень, экспонента и логарифм

Автор
avatar-alexevsalexevs
Notebook

Возведение в степень, извлечение корня и логарифмирование

В этом примере показаны различные способы нахождения степени, корня, экспоненты и логарифма

Возведение в степень

Зададим квадратную матрицу целых чисел размерностью 3$\times$3.

X = [3 1 4
     5 1 3
     2 8 7];

Возведение матрицы в степень равнозначно матричному умножению самой на себя раз.

X ^ 2
3×3 Matrix{Int64}:
 22  36  43
 26  30  44
 60  66  81

Поэлементное возведение матрицы в степень равнозначно поэлементному умножению матрицы самой на себя. Например: .

X .^ 2
3×3 Matrix{Int64}:
  9   1  16
 25   1   9
  4  64  49

Для возведения в степень с присваиванием можно использовать следующие выражения:

X ^= 2
3×3 Matrix{Int64}:
 22  36  43
 26  30  44
 60  66  81
X = [3 1 4
     5 1 3
     2 8 7];
X .^= 2
3×3 Matrix{Int64}:
  9   1  16
 25   1   9
  4  64  49

Также поддерживается возведение в отрицательную степень:

X = [3 1 4
     5 1 3
     2 8 7];
X ^ (-3)
3×3 Matrix{Float64}:
  0.057581   -0.051794     -0.00260417
  0.0529514  -0.000868056  -0.0257523
 -0.0792824   0.0353009     0.0225694

Такая операция соответствует умножению обратной матрицы самой на себя раз.

isequal(X^(-3), inv(X)^3)
true

Рассмотрим возведение в степень с показателем в виде рационального числа или числа с плавающей точкой:

Q = 2//3;
q = 2/3;
X ^ Q
3×3 Matrix{ComplexF64}:
   2.33466+2.22045e-16im  -0.261273-4.44089e-16im   1.58405+1.11022e-16im
   2.70242-3.33067e-16im   0.774717+0.0im          0.882171+1.11022e-16im
 -0.210172+0.0im            3.68872+0.0im           3.50221-2.22045e-16im
isequal(X^Q, X^q)
true

Извлечение корня

Вычислить квадратный корень матрицы можно несколькими способами:

  • при помощи функции sqrt();
  • возведением в степень ;
  • при помощи оператора квадратного корня .
sqrt(X)
3×3 Matrix{Float64}:
  2.02239   -0.373716  0.907713
  1.79475    0.866793  0.401277
 -0.461978   2.29118   2.5495
isequal(X,sqrt(X))
true

Для каждого из способов извлечения квадратного корня существует его поэлементный аналог:

sqrt.(X)
3×3 Matrix{Float64}:
 1.73205  1.0      2.0
 2.23607  1.0      1.73205
 1.41421  2.82843  2.64575
isequal(.√X,sqrt.(X)) && isequal(X.^(0.5),sqrt.(X))
true

Для вычисления целочисленного квадратного корня можно воспользоваться функцией isqrt():

isqrt(26)
5

Вычислить кубический корень можно несколькими способами:

  • при помощи функции cbrt();
  • при помощи оператора кубического корня .
x = 1e3;
cbrt(x)
10.0
isequal(x,cbrt(x))
true

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

Для операции и функции cbrt() также доступно поэлементное вычисление матриц.

cbrt.(X)
3×3 Matrix{Float64}:
 1.44225  1.0  1.5874
 1.70998  1.0  1.44225
 1.25992  2.0  1.91293
isequal(.∛x,cbrt.(x))
true

Следует обратить внимание, что при вычислении корня чётного порядка отрицательного действительного числа будет сформирована ошибка. Для корректных вычислений в таком случае подкоренное выражение необходимо преобразовать в комплексное представление.

sqrt(complex(-1))
0.0 + 1.0im

Экспонента и показательные функции

Вычисление экспоненты числа выполняется следующим образом:

exp(1)
2.718281828459045

Для точного вычисления , при около нуля можно воспользоваться функцией expm1()

expm1(eps()/10)
2.2204460492503132e-17

Для сравнения, результат вычисления около нуля функцией exp():

exp(eps()/10)-1.0
0.0

Также существуют фунции вычисления степени по основаниям 2 и 10.

exp2(10)
1024.0
exp10(7)
1.0e7

Для эффективного вычисления степени по выражению используется функция ldexp(x,n), где x - число с плавающей точкой, n - целое число.

ldexp(2.0,10)
2048.0

Логарифмирование

Для вычисления натурального логарифма используется функция log().

log(exp(1))
1.0

Также можно вычислить логарифм по основаниям 2 и 10:

log2(2048)
11.0
log10(1e-6)
-6.0

Логарифм по заданному основаниию рассчитывается при помощи функции log(a,b).

log(8,512)
3.0

Для точного вычисления натурального логарифма log(x+1) для x около нуля используется функция:

log1p(eps()/10)
2.2204460492503132e-17

Для сравнения, стандартная функция log(1+x) выдаст следующий результат:

log(1+eps()/2)
0.0

Вывод

В этом демонстрационном примере мы рассмотрели основные приемы использования операций и функций при вычислении степени, корня, экспоненты и логарифма. Дополнительную информацию по приведенным операциям и функциям можно получить в документации Engee Математические операции и элементарные функции.