Powers and Exponentials
This topic shows how to compute matrix powers and exponentials using a variety of methods.
Positive Integer Powers
If A is a square matrix and p is a positive integer, then A^p effectively multiplies A by itself p-1 times. For example:
A = [1 1 1
1 2 3
1 3 6];
A^2ans = 3×3
3 6 10
6 14 25
10 25 46
Inverse and Fractional Powers
If A is square and nonsingular, then A^(-p) effectively multiplies inv(A) by itself 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® calculates inv(A) and A^(-1) with the same algorithm, so the results are exactly the same. Both inv(A) and A^(-1) produce warnings if the matrix is close to being singular.
isequal(inv(A),A^(-1))
ans = logical
1
Fractional powers, such as A^(2/3), are also permitted. The results using fractional powers depend on the distribution of the eigenvalues of the matrix.
A^(2/3)
ans = 3×3
0.8901 0.5882 0.3684
0.5882 1.2035 1.3799
0.3684 1.3799 3.1167
Element-by-Element Powers
The .^ operator calculates element-by-element powers. For example, to square each element in a matrix you can use A.^2.
A.^2
ans = 3×3
1 1 1
1 4 9
1 9 36
Square Roots
The sqrt function is a convenient way to calculate the square root of each element in a matrix. An alternate way to do this is 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
For other roots, you can use nthroot. For example, calculate 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
These element-wise roots differ from the matrix square root, which calculates a second matrix such that . The function sqrtm(A) computes A^(1/2) by a more accurate algorithm. The m in sqrtm distinguishes this function from sqrt(A), which, like A.^(1/2), does its job element-by-element.
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
Scalar Bases
In addition to raising a matrix to a power, you also can raise a scalar to the power of a matrix.
2^A
ans = 3×3
10.4630 21.6602 38.5862
21.6602 53.2807 94.6010
38.5862 94.6010 173.7734
When you raise a scalar to the power of a matrix, MATLAB uses the eigenvalues and eigenvectors of the matrix to calculate the matrix power. If [V,D] = eig(A), then .
[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
Matrix Exponentials
The matrix exponential is a special case of raising a scalar to a matrix power. The base for a matrix exponential is Euler's number 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 function is a more convenient way to calculate matrix exponentials.
expm(A)
ans = 3×3
103 ×
0.1008 0.2407 0.4368
0.2407 0.5867 1.0654
0.4368 1.0654 1.9418
The matrix exponential can be calculated in a number of ways. See Matrix Exponentials for more information.
Dealing with Small Numbers
The MATLAB functions log1p and expm1 calculate and accurately for very small values of . For example, if you try to add a number smaller than machine precision to 1, then the result gets rounded to 1.
log(1+eps/2)
ans = 0
However, log1p is able to return a more accurate answer.
log1p(eps/2)
ans = 1.1102e-16
Likewise for , if is very small then it is rounded to zero.
exp(eps/2)-1
ans = 0
Again, expm1 is able to return a more accurate answer.
expm1(eps/2)
ans = 1.1102e-16
See Also
exp | expm | expm1 | power | mpower | sqrt | sqrtm | nthroot