Main Content

幂和指数

本主题说明如何使用各种方法计算矩阵幂和指数。

正整数幂

如果 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

逐元素幂

.^ 运算符计算逐元素幂。例如,要对矩阵中的每个元素求平方,可以使用 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

这些按元素计算的根不同于矩阵平方根,后者计算得到的是另一个矩阵 B 以满足 A=BB。函数 sqrtm(A) 采用更精确的算法计算 A^(1/2)sqrtm 中的 m 将此函数与 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),则 2A=V 2D 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

矩阵指数可以用多种方法来计算。有关详细信息,请参阅 矩阵指数

处理较小的数字

对于非常小的 x 值,MATLAB 函数 log1pexpm1 可以精确计算 log(1+x)ex-1。例如,如果您尝试将小于计算机精度的一个数与 1 相加,则结果会舍入到 1。

log(1+eps/2)
ans = 0

但是,log1p 能够返回更准确的答案。

log1p(eps/2)
ans = 1.1102e-16

同样,对于 ex-1,如果 x 非常小,则会将它舍入为零。

exp(eps/2)-1
ans = 0

同样,expm1 能够返回更准确的答案。

expm1(eps/2)
ans = 1.1102e-16

另请参阅

| | | | | | |

相关主题