MATLAB求解矩阵函数
0. 说明
这里的 1-2 节涉及到矩阵函数的一般求法。
第 3 节演示了为什么不能用普通的运算函数求矩阵函数。
第 4 节介绍了MATLAB内置的矩阵函数求解函数。
如果赶时间,直接看第 4 节即可!!!
1. 矩阵函数介绍
直接查看百度百科吧,我也说不太清楚:矩阵函数
总的来说,矩阵函数的求解方式和一般的标量方式不一样。
常用的矩阵函数有:
- exp(A)
- log(A)
- sin(A)
- cos(A)
- sinh(A)
- cosh(A)
MATLAB内置的求解方案也只能求解这6类矩阵函数
2. 矩阵函数求解方法
2.1 例子介绍
这里以矩阵:
为例,求解其矩阵函数 sinA。求解方案在百度百科里面有两种。
2.2 jordan标准型法
-
求出A的jordan标准型 J 和伴随矩阵 P
可以看到其特征值 λ1 = λ2 = λ3 = 2; -
计算需要的标量函数值
我们的函数是 f(z)=sinz。根据jordan矩阵和特征值,我们知道需要 f(2) 和 f‘(2)来构造f(J).
- 根据公式构造 f(J)
- 根据 f(J) 和 P 计算矩阵函数
2.3 最小多项式法
-
求矩阵的最小多项式
可以看到,最小多项式为 m=x²-4x+4=(x-2)²,有两个相同的特征根。 -
计算需要的标量函数值
我们的函数是 f(z)=sinz,根据定理需要计算 f(2) 和 f’(2),和上面jordan求法相同。
- 计算构造量C0和C1
令 g(λ) = C0+C1*λ (根据定理,f 与之相同)
则,f(2)=g(2)=C0+2C1 f’(2)=g’(2)=C1;
f(2)和f’(2)上文已经求出,所以由此可以解出C0和C1:
- 根据定理直接构造 f(A)
很简单,f(A)=C0I+C1A,如下:
2.4 两种方法计算结果相同
3. 一般矩阵运算函数不可用
刚开始我以为MATLAB普通的运算符会直接为我们计算矩阵函数,实际上并不是这样。
我们的例子是 sin(A),这里试一下:
显然,这里是直接对每个元素求sin,不符合我们的要求。
4. 矩阵函数求解函数funm()
步入正题。这里才是MATLAB内置的函数矩阵的求解函数:funm()
官方文档介绍如下:
意味着可以计算常用函数的矩阵函数,调用形式也比较清楚。
我们将其应用到我们的例子中,得到了正确结果:
注:求exp和log也有专有的expm和logm函数,效果和funm一样。