В этом разделе показано, как вычислять мощности матрицы и экспоненты с помощью различных методов.
Если A является квадратной матрицей и p является положительным целым числом, то A^p эффективно умножает A сама по себе p-1 времена. Например:
A = [1 1 1
1 2 3
1 3 6];
A^2ans = 3×3
3 6 10
6 14 25
10 25 46
Если A является квадратным и несингулярным, то A^(-p) эффективно умножает inv(A) сама по себе p-1 времена.
A^(-3)
ans = 3×3
145.0000 -207.0000 81.0000
-207.0000 298.0000 -117.0000
81.0000 -117.0000 46.0000
MATLAB ® вычисляетinv(A) и A^(-1) с тем же алгоритмом, так что результаты точно такие же. Оба inv(A) и A^(-1) создавать предупреждения, если матрица близка к сингулярной.
isequal(inv(A),A^(-1))
ans = logical
1
Дробные полномочия, такие как A^(2/3), также допускаются. Результаты с использованием дробных степеней зависят от распределения собственных значений матрицы.
A^(2/3)
ans = 3×3
0.8901 0.5882 0.3684
0.5882 1.2035 1.3799
0.3684 1.3799 3.1167
.^ оператор вычисляет поэлементные мощности. Например, для возведения каждого элемента в квадрат в матрице можно использовать A.^2.
A.^2
ans = 3×3
1 1 1
1 4 9
1 9 36
sqrt функция является удобным способом вычисления квадратного корня каждого элемента в матрице. Альтернативный способ сделать это - A.^(1/2).
sqrt(A)
ans = 3×3
1.0000 1.0000 1.0000
1.0000 1.4142 1.7321
1.0000 1.7321 2.4495
Для других корней можно использовать nthroot. Например, рассчитать A.^(1/3).
nthroot(A,3)
ans = 3×3
1.0000 1.0000 1.0000
1.0000 1.2599 1.4422
1.0000 1.4422 1.8171
Эти элементные корни отличаются от квадратного корня матрицы, который вычисляет вторую матрицу так, что BB. Функцияsqrtm(A) вычисляет A^(1/2) по более точному алгоритму. m в sqrtm отличает эту функцию от sqrt(A), который, как A.^(1/2), выполняет свою работу поэлементно.
B = sqrtm(A)
B = 3×3
0.8775 0.4387 0.1937
0.4387 1.0099 0.8874
0.1937 0.8874 2.2749
B^2
ans = 3×3
1.0000 1.0000 1.0000
1.0000 2.0000 3.0000
1.0000 3.0000 6.0000
Помимо возведения матрицы в степень, можно также поднять скаляр до степени матрицы.
2^A
ans = 3×3
10.4630 21.6602 38.5862
21.6602 53.2807 94.6010
38.5862 94.6010 173.7734
При возведении скаляра в степень матрицы MATLAB использует собственные значения и собственные векторы матрицы для вычисления мощности матрицы. Если [V,D] = eig(A), то V-1.
[V,D] = eig(A); V*2^D*V^(-1)
ans = 3×3
10.4630 21.6602 38.5862
21.6602 53.2807 94.6010
38.5862 94.6010 173.7734
Экспоненциальность матрицы является частным случаем возведения скаляра в степень матрицы. Основанием для экспоненциальной матрицы является число Эйлера e = exp(1).
e = exp(1); e^A
ans = 3×3
103 ×
0.1008 0.2407 0.4368
0.2407 0.5867 1.0654
0.4368 1.0654 1.9418
expm функция является более удобным способом вычисления экспонентов матрицы.
expm(A)
ans = 3×3
103 ×
0.1008 0.2407 0.4368
0.2407 0.5867 1.0654
0.4368 1.0654 1.9418
Экспоненциальная матрица может быть вычислена несколькими способами. Дополнительные сведения см. в разделе Матричные экспоненты.
Функции MATLAB log1p и expm1 рассчитать x) ex-1 точно для очень малых значений x. Например, если вы пытаетесь добавить число меньше точности машины к 1, то результат округляется до 1.
log(1+eps/2)
ans = 0
Однако log1p способен вернуть более точный ответ.
log1p(eps/2)
ans = 1.1102e-16
Аналогично для , если очень мал, то он округляется до нуля.
exp(eps/2)-1
ans = 0
Опять же, expm1 способен вернуть более точный ответ.
expm1(eps/2)
ans = 1.1102e-16
exp | expm | expm1 | mpower | nthroot | power | sqrt | sqrtm