Эта тема показывает, как вычислить матричные степени и экспоненциалы с помощью множества методов.
Если A квадратная матрица и p положительное целое число, затем A^p эффективно умножает A отдельно p-1 \times. Например:
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 \times.
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
Эти поэлементные корни отличаются от матричного квадратного корня, который вычисляет вторую матрицу таким образом, что . Функциональный 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,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 вычислить и точно для очень маленьких значений . Например, при попытке добавить номер, меньший, чем точность машины к 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 | power | mpower | sqrt | sqrtm | nthroot