![薛定宇教授大讲堂(卷Ⅲ):MATLAB线性代数运算](https://wfqqreader-1252317822.image.myqcloud.com/cover/150/29977150/b_29977150.jpg)
2.6 矩阵函数的微积分运算
本节首先给出矩阵函数的导数和积分定义。在此基础上,还将介绍各种复杂函数矩阵的导函数矩阵计算方法与应用,以及Jacobi矩阵与Hesse矩阵的概念与计算问题。
2.6.1 矩阵函数的导数
定义2-25 若矩阵A(t)是t的函数,则A(t)对t的导数等于每个元素单独求导的矩阵,即
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P48_14584.jpg?sign=1738885068-WORGRNeYHAQ6BOnh6R9QWXL3ECwgkPCa-0-7adf1f4fc14d3e80ef1b6069c8615229)
如果已知矩阵A(t)是t的函数,则dA(t)/dt可以由diff()函数直接求出。
例2-35 试求出下面函数矩阵的导数。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P48_14586.jpg?sign=1738885068-lRYDYVsQdQO6hEzQE7mVMGO89JyVDBiE-0-b7801918cda1083891521e749dcdb280)
解 可以先将矩阵函数输入MATLAB环境,然后直接对其求导。由于这里使用了矩阵函数的表示方法,为避免与已有矩阵冲突,应该用clear命令先清除原有的A矩阵,再输入新矩阵。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P48_14588.jpg?sign=1738885068-IduLe8Nu3GfvEoVbgSzeJHKP4h1rWtDO-0-02a64a026f7401087e8ab92873f7e1fc)
得出的导函数矩阵为
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P48_14590.jpg?sign=1738885068-cCTeRq51aQU1iynnHFTy8bZUUUZFHYkw-0-311e550a1090672ea3fef0cffcb54823)
定理2-9 假设A(t)和B(t)都可微,则
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P49_14592.jpg?sign=1738885068-Mqx8x3WFfxd3c04JrxfllVuXgldV0L0u-0-ed7c3af3cef635a2d7eef0ff733d225f)
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P49_14593.jpg?sign=1738885068-2yDi0VNQnDophVti8ycMLCQGXVKJGELg-0-9643dd099479d1dc6f6eddcc04633d60)
例2-36 考虑例2-35中的A(t)与如下B(t)矩阵,试求A(t)B(t)对t的导数。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P49_14594.jpg?sign=1738885068-QKVHtyDaBuOuPUpzk6mQXRvitBLaK9zd-0-f5021311fbd82cef008b1482c53e800c)
解 可以用两种方法求A(t)B(t)的导数,一种方法是先求出A(t)B(t)再用diff()函数直接求导;另一种方法是由式(2-6-3)求导,两种方法得出的结果完全一致。从这个例子看,对复杂函数求导问题没有必要借助于式(2-6-3)介绍的间接方法,直接调用diff()函数求解即可。由于得出的结果过于繁杂,这里就不列出了。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P49_14596.jpg?sign=1738885068-USRUNpE6nd0nAf2xJ9c8dYSAUhSPRa7m-0-9007e9007843b0cdd599a9f304cb305a)
2.6.2 矩阵函数的积分
定义2-26 矩阵函数A(t)对t的定积分定义为每个元素定积分构成的矩阵。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P49_14597.jpg?sign=1738885068-JzxF1PMmd1UYa5ROTzwuvgM8JZQpfCS1-0-aa74f84d6460dbb04868980be69bd6c2)
MATLAB提供的int()函数可以直接对矩阵进行不定积分、定积分或反常积分运算。下面将通过例子演示积分运算。
例2-37 试对例2-35的结果进行积分运算,验证能否返回原函数。
解 可以先输入A(t)函数矩阵,对其求导再对结果作不定积分运算。可以看出,最终得出的结果可以还原给定的矩阵。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P49_14599.jpg?sign=1738885068-tP2qnPnCb4vOTCAhfyZVjoxXEcBjVyQM-0-1b1ed1e2a8236ed02b51f8bde20942f0)
2.6.3 向量函数的Jacobi矩阵
定义2-27 假设有n个自变量的m个函数定义为
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P50_14600.jpg?sign=1738885068-i2e0VtrMisCSFty7P5l5tNAG9vmDskvi-0-a01f5d2b2c51ee6289dcaef8255edbe1)
将相应的yi对xj求偏导,则得出如下的Jacobi矩阵。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P50_14601.jpg?sign=1738885068-r5KNDy2A2jLVYn6nPXUqZBDCquOIul2Y-0-4d87f2be46a75c3a6b2978602468ebaa)
Jacobi矩阵(Jacobian matrix)是以德国数学家Carl Gustav Jacob Jacobi(1804−1851)命名的,又称为梯度矩阵。Jacobi矩阵可以由MATLAB的符号运算工具箱中的jacobian()函数直接求得,其调用格式为J=jacobian(y,x)。其中,x是自变量构成的向量,y是由各个函数构成的向量。
例2-38 已知球面坐标到直角坐标的变换公式为x=rsin θcosϕ,y=rsin θsin ϕ,z=rcosθ,试求出函数向量[x,y,z]对自变量向量[r,θ,ϕ]的Jacobi矩阵。
解 先声明符号变量并描述三个函数,这样可以用下面语句求解出其Jacobi矩阵。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P50_14606.jpg?sign=1738885068-ZYivkPPrMtT6E77NT05zz5RFSpOo3tKF-0-32fc1a09e30a23ad72441fc0697eeeb7)
可以得出Jacobi矩阵为
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P50_14603.jpg?sign=1738885068-XLppjOiu9cTC2Giod8YUO5mvUjCBjkk4-0-d1e716a2d2a48cc7a2a6ad53f7132709)
2.6.4 Hesse矩阵
定义2-28 给定n元标量函数f(x1,x2,…,xn)的Hesse矩阵定义为
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P50_14604.jpg?sign=1738885068-s6BYMrzfTPWYhusooPaTsCvKoe3u8ByG-0-61f298782cdcd521ac3bafc910434c69)
Hesse矩阵是以德国数学家Ludwig Otto Hesse(1811−1874)命名的,该矩阵是标量函数f(x1,x2,…,xn)的二阶偏导数矩阵。MATLAB提供了hessian()函数,可以直接求出原函数的Hesse矩阵,调用格式为H=hessian(f,x)。其中,向量x=[x1,x2,…,xn]。
早期版本的MATLAB符号运算工具箱未提供hessian()函数,可以由嵌套调用的jacobian()函数求解,H=jacobian(jacobian(f,x),x)。
例2-39 试求二元函数的Hesse矩阵。
解 下面语句可以直接求取该函数的Hesse矩阵。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P51_14609.jpg?sign=1738885068-zCYMmzTzvHh70QSgpluE6r6NKYm6X5Mw-0-8bfda3bb2328b8e3d840e1cdbb20dce2)
提取指数再化简,得出的结果(或早期版本嵌套调用jacobian()函数)为
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P51_14613.jpg?sign=1738885068-pYeUQdHPTMwfAnp0PIKU6tRctvsvuxcy-0-da50bd4fa52162541ce8abe229b9bf7f)