矩阵指数函数

该示例示出的19点的方式来计算矩阵的指数3。

关于矩阵指数的计算背景,请参阅:

Moler,C和C范贷款。“十九可疑的方法来计算一个矩阵的指数,25年后“。SIAM审查。卷。45,第1号,2003,第3-49。

通过创建一个矩阵开始一个

A = [0 1 2;0.5 0 1;2 1 0]
A =3×30 1.0000 2.0000 0.5000 0 1.0000 2.0000 1.0000 0
Asave = A;

方法1:缩放和磨边

expmdemo1在书中11.3.1算法的实现:

戈卢布,基因H.和查尔斯·范贷款。矩阵计算,第3版。马里兰州巴尔的摩:约翰霍普金斯大学出版社,1996年。

%尺度的由2的乘方,以便其范数是<1/2。并[f,E] = LOG2(范数(A,'INF'));S = MAX(0,E + 1);A = A / 2 ^ S;%Pade逼近为EXP(A)X = A;C = 1/2;E =眼(尺寸(A))+ C * A;d =眼(尺寸(A)) -  C * A;Q = 6;P = 1;对于K = 2:Q C = C *(Q-K + 1)/(K *(2 * Q-K + 1));X = A * X;CX = C * X;E = E + CX;如果p d = d + CX;其他d = d  -  CX;结束P =〜磷;结束E = d。\ E;%撤消缩放通过反复平方对于K = 1:发E = E * E;结束E1 = E
E1 =3×35.3091 4.0012 5.5778 2.8088 2.8845 3.1930 5.1737 4.0012 5.7132

方法2:泰勒系列

expmdemo2使用了经典的定义矩阵指数由幂级数给出

Ë 一个 = Σ ķ = 0 1 ķ 一个 ķ

一个 0 是具有相同的尺寸的单位矩阵 一个 。作为一个实际的数值方法,这种方法是缓慢和不准确的,如果规范(A)过大。

A = Asave;%泰勒级数为EXP(A)E =零(尺寸(A));F =眼(尺寸(A));K = 1;范数(E + F-E,1)> 0 E = E + F;F = A * F / K表;k = k + 1;结束E2 = E
E2 =3×35.3091 4.0012 5.5778 2.8088 2.8845 3.1930 5.1737 4.0012 5.7132

方法3:特征向量

expmdemo3假定矩阵拥有全套的特征向量 V 这样 一个 = VD V - 1 。矩阵指数可以乘幂本征值的对角矩阵来计算:

Ë 一个 = V Ë d V - 1

作为一个实际的数值方法,精度由本征向量矩阵的条件来确定。

A = Asave;[V,d] = EIG(A);E = V * DIAG(EXP(DIAG(d)))/ V;E3 = E
E3 =3×35.3091 4.0012 5.5778 2.8088 2.8845 3.1930 5.1737 4.0012 5.7132

比较结果

对于本例中的矩阵,这三种方法同样有效。

E = expm(Asave);ERR1 = E  -  E1
ERR1 =3×310-14×0.3553 0.1776 0.0888 0.0888 0.1332 -0.0444 0 0 -0.2665
ERR2 = E  -  E2
ERR2 =3×310-14×0 0 -0.1776 -0.0444 0 -0.0888 0.1776 0 0.0888
ERR3 = E  -  E3
ERR3 =3×310-14×-0.7105 -0.5329 -0.7105 -0.6661 -0.5773 -0.8882 -0.7105 -0.7105 -0.9770

泰勒级数失败

对于一些矩阵在泰勒级数的条件变得非常大,他们去到零之前。所以,expmdemo2失败。

A = [-147 72;-192 93];E1 = expmdemo1(A)
E1 =2×2-0.0996 0.0747 -0.1991 0.1494
E2 = expmdemo2(A)
E2 =2×2106×-1.1985 -0.5908 -2.7438 -2.0442
E3 = expmdemo3(A)
E3 =2×2-0.0996 0.0747 -0.1991 0.1494

特征向量故障

这里是没有一套完整的特征向量的矩阵。所以,expmdemo3失败。

A = [-1 1;0 -1];E1 = expmdemo1(A)
E1 =2×20.3679 0.3679 0 0.3679
E2 = expmdemo2(A)
E2 =2×20.3679 0.3679 0 0.3679
E3 = expmdemo3(A)
E3 =2×20.3679 0 0 0.3679

也可以看看