导数
连续介质力学经常用到各种导数,本文总结一下导数的计算方法。
以向量为\(\vec x\in \mathbb{R}^m\),\(\vec t\in \mathbb{R}^n\),标量为\(t\),矩阵为\(X\in \mathbb{R}^{m\times n}\)为例。
对标量求导
向量对标量求导
结果是向量的每一个元素对标量求导组成的列向量:
\[ \frac{\partial \vec x}{\partial t}= \begin{bmatrix} \frac{d x_1}{d t},\\...\\\frac{d x_m}{d t} \end{bmatrix}. \]
对向量求导
标量对向量求导
可以看做是多元函数对多变量的求导,因此结果是梯度,是标量对向量的每一个元素求导组成的行向量:
\[ \frac{\partial t}{\partial \vec x}=\begin{bmatrix} \frac{d t}{d x_1}&...&\frac{d t}{d x_m} \end{bmatrix}. \]
向量对向量求导
结果是雅克比(Jacobi)矩阵。
\[ \frac{\partial \vec x}{\partial \vec t}= \begin{bmatrix} \frac{d x_1}{d t_1},&\frac{d x_2}{d t_1}&...&\frac{d x_{n-1}}{d t_1}&\frac{d x_m}{d t_1}\\ \frac{d x_1}{d t_2},&\frac{d x_2}{d t_2}&...&\frac{d x_{n-1}}{d t_2}&\frac{d x_m}{d t_2}\\ &&...\\ &&...\\ \frac{d x_1}{d t_{n}},&\frac{d x_2}{d t_{n}}&...&\frac{d x_{n-1}}{d t_{n}}&\frac{d x_m}{d t_{n}}\\ \end{bmatrix}. \]
对矩阵求导
除了标量对矩阵求导的情况之外,其余产生的结果都是张量。如果使用分母布局,对于\(\frac{\partial A}{\partial B}\),\(A\)的维度是\(a_1 \times a_2 \times ... \times a_n\),\(B\)的维度是\(b_1 \times b_2 \times ... \times b_m\),那么结果的维度是\(b_1 \times b_2 \times ... \times b_m \times a_1 \times a_2 \times ... \times a_n\)(分母布局)。即: \[ \frac{\partial A_{ij...}}{\partial B_{pq...}}=C_{pq...ij...} e^{p} \otimes e^{q} \otimes ... \otimes e^{i} \otimes e^{j} \otimes ... \]
比如,对于矩阵\(P\in R^{3\times 3}\),\(F\in R^{3\times 3}\),那么:
3x3x3x3张量\(\frac{\partial P}{\partial F}\)的(i,j,p,q)元素是\(\frac{\partial P_{pq}}{\partial F_{ij}}\)。即矩阵P的第p行第q列元素对矩阵F的第i行第j列元素求导。
标量对矩阵求导
矩阵微分可以很方便的计算标量对矩阵的导数,因为矩阵的迹(trace)运算有很多方便的性质。此部分可以参考矩阵分析与应用(Matrix Analysis and Applications)的3.2节。
对于矩阵
\[ X = \begin{bmatrix} x_{11} & x_{12} & ... & x_{1n}\\ x_{21} & x_{22} & ... & x_{2n}\\ ...\\ x_{m1} & x_{m2} & ... & x_{mn} \end{bmatrix}, \]
其微分为:
\[ dX = \begin{bmatrix} dx_{11} & dx_{12} & ... & dx_{1n}\\ dx_{21} & dx_{22} & ... & dx_{2n}\\ ...\\ dx_{m1} & dx_{m2} & ... & dx_{mn} \end{bmatrix}. \]
对于一个标量函数\(f(X)\),其微分为:
\[ df(X) = \begin{bmatrix} \frac{\partial f}{\partial x_{11}} & \frac{\partial f}{\partial x_{12}} & ... & \frac{\partial f}{\partial x_{1n}}\\ \frac{\partial f}{\partial x_{21}} & \frac{\partial f}{\partial x_{22}} & ... & \frac{\partial f}{\partial x_{2n}}\\ ...\\ \frac{\partial f}{\partial x_{m1}} & \frac{\partial f}{\partial x_{m2}} & ... & \frac{\partial f}{\partial x_{mn}} \end{bmatrix} : dX. \]
令
\[ A = \begin{bmatrix} \frac{\partial f}{\partial x_{11}} & \frac{\partial f}{\partial x_{12}} & ... & \frac{\partial f}{\partial x_{1n}}\\ \frac{\partial f}{\partial x_{21}} & \frac{\partial f}{\partial x_{22}} & ... & \frac{\partial f}{\partial x_{2n}}\\ ...\\ \frac{\partial f}{\partial x_{m1}} & \frac{\partial f}{\partial x_{m2}} & ... & \frac{\partial f}{\partial x_{mn}} \end{bmatrix}, \]
则:
\[ df(X) = A : dX = \text{tr}(A^T dX) = \text{tr}(d f(X)). \]
因此对于一个标量函数\(f(X)\)对矩阵\(X\)求导,只需要写出该标量的微分\(df(x)\),然后使用矩阵的迹的性质,推出\(\text{tr}(A^T dX)\)的形式即得到:
\[ \frac{\partial f(X)}{\partial X} = A. \]
大部分常见公式可以查matrixcookbook。
还有一种使用爱因斯坦求和约定来计算的方法里奇微积分。使用这个网站可以计算:matrixcalculus。