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