В этой теме показано, как вычислить матричные степени и экспоненциалы с помощью различных методов.
Если A
является квадратной матрицей и p
является положительным целым числом, тогда A^p
эффективно умножает A
сам по себе p-1
времени. Для примера:
A = [1 1 1 1 2 3 1 3 6]; A^2
ans = 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
The .^
оператор вычисляет степени. Например, чтобы квадрировать каждый элемент в матрицу, которую вы можете использовать A.^2
.
A.^2
ans = 3×3
1 1 1
1 4 9
1 9 36
The 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)
по более точному алгоритму. The 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
The 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
| mpower
| nthroot
| power
| sqrt
| sqrtm