鑑於本碩博在讀期間未接受 Matrix Calculus 的專項訓練,而在CV, CG 演算法中卻大量涉及 Jacobian Matrix的推導,現將其結合圖形學實際案例進行歸納,備記、備討論。

目錄

X-by-

Vector

X-by-

Matrix

開始之前有必要澄清全域性的符號使用。mathbb 體表示數域

\mathbb{R}

。普通小寫

x \in  \mathbb{R}

表示標量; bm體

\bm{x} \in  \mathbb{R}^n

為列向量; mathbf 體

\mathbf{X} \in  \mathbb{R}^{m\times n}

為矩陣。

由於 Jacobian Matrix 的形狀、維度因問題各異,使用 mathrm體

\mathrm{J}

將其視為一種函式對映;為避免混淆,函式

\mathrm{exp}(\mathbf{A})

對應矩陣的逐元素指數,函式

\mathrm{expm}(\mathbf{A})

對應矩陣的指數函式。

由於側重解決空間問題,

\bm{x}

總是三維,會採取

\bm{x} =[x, y, z]^T, \bm{u} =[u_x, u_y, u_z]^T

的拆分表達。

求解 Jaccobian 時還應當注意一個前提:位於分母的 向量/ 矩陣各維度之間應當 mathematically independent and variable。

X-by-

Vector

這一部分包含 標量關於向量

\frac{\partial u}{\partial \bm{x}}

,向量關於向量

\frac{\partial \bm{u}}{\partial \bm{x}}

兩部分,與 Wiki 中結果採用“

分子佈局

(numerator layout)”的結果一致:單行對應因變數的同一維,單列對應自變數的同一維。

1。1 標量關於向量的

\mathrm{J}(\bm{x})

:行向量

\frac{\partial u}{\partial \bm{x}} \triangleq \left[\begin{array}{ccc} \frac{\partial u}{\partial x} & \frac{\partial u}{\partial y} & \frac{\partial u}{\partial z} \\ \end{array}\right] = (\nabla_{\bm{x}} u)^T

使用 Jacobian 計算增量:

\Delta u = u(\bm{x}+\Delta\bm{x}) -u(\bm{x})= \mathrm{J}(\bm{x}) \cdot \Delta \bm{x}

實際上,

\mathrm{J}(\bm{x})

的形狀規定,旨在方便與

\Delta \bm{x}

進行矩陣乘法運算。

Properties

鏈式法則(先外後內):

\frac{\partial g(u( \bm{x}))}{\partial \bm{x}}  =\frac{\partial g(u )}{\partial u}  \cdot  \frac{\partial u( \bm{x})}{\partial \bm{x}}

純標量乘法法則:

\frac{\partial u(\bm{x}) v(\bm{x})}{\partial \bm{x}}= u\frac{\partial v}{\partial \bm{x}}+ v\frac{\partial u}{\partial \bm{x}}

1。2 向量關於向量的

\mathrm{J}(\bm{x})

:矩陣

矩陣的每一行對應因變數的一維:

\frac{\partial \bm{u}}{\partial \bm{x}}\triangleq\left[\begin{array}{ccc} \frac{\partial u_{x}}{\partial x} & \frac{\partial u_{x}}{\partial y} & \frac{\partial u_{x}}{\partial z} \\ \frac{\partial u_{y}}{\partial x} & \frac{\partial u_{y}}{\partial y} & \frac{\partial u_{y}}{\partial z} \\ \frac{\partial u_{z}}{\partial x} & \frac{\partial u_{z}}{\partial y} & \frac{\partial u_{z}}{\partial z} \end{array}\right]

使用 Jacobian 計算增量:

\Delta \bm{u} = \mathrm{J}(\bm{x}) \cdot \Delta \bm{x}

Properties

鏈式法則(先外後內):

\frac{\partial \bm{g}(\bm{u}( \bm{x}))}{\partial \bm{x}}  =\frac{\partial  \bm{g}( \bm{u})}{\partial \bm{u}}  \cdot  \frac{\partial u( \bm{x})}{\partial \bm{x}}

純向量乘法(點積)法則:

\frac{\partial \bm{u}(\bm{x})^T\bm{v}(\bm{x})}{\partial \bm{x}}= \bm{u}^T\frac{\partial \bm{v}}{\partial \bm{x}}+ \bm{v}^T\frac{\partial \bm{u}}{\partial \bm{x}}

混合乘法法則:

\frac{\partial u(\bm{x}) \bm{v}(\bm{x})}{\partial \bm{x}}= u\frac{\partial \bm{v}}{\partial \bm{x}}+ \bm{v}\cdot \frac{\partial u}{\partial \bm{x}}

Examples

1)

\frac{\partial \bm{x}}{\partial \bm{x}}=\mathbf{I}.

座標軸之間正交,不同維度之間無關;

2)

\frac{\partial \bm{w}^T\bm{x}}{\partial \bm{x}}=\bm{w}^T;  \frac{\partial \mathbf{A}\bm{x}}{\partial \bm{x}}=\mathbf{A}.

點乘即投影,矩陣乘向量即逐行投影;

3)

\frac{\partial \|\bm{x}\|}{\partial \bm{x}}  = \hat{\bm{x}}^T; ~~~ \frac{\partial \|\bm{x}-\bm{b}\|}{\partial \bm{x}} = \widehat{(\bm{x}-\bm{b})}^T

Proof: 利用鏈式法則,

\mathrm{J}_1(\bm{x})= \frac{\partial \sqrt{\bm{x}^T\bm{x}}}{\partial \bm{x}}  =  \frac{\partial u^{\frac{1}{2}}}{\partial u} \cdot \frac{\partial \bm{x}^T\bm{x}}{\partial \bm{x}} =\frac{1}{2}u^{-\frac{1}{2}}  \cdot 2 \bm{x}^T  = \frac{\bm{x}^T}{\|\bm{x}\|}

,其中

u =  \bm{x}^T\bm{x}

\mathrm{J}_2(\bm{x})=\frac{\partial \|\bm{x}-\bm{b}\|}{\partial \bm{x}}  =\frac{\partial \|\bm{u}\|}{\partial \bm{u}} \cdot \frac{ \partial \bm{u}}{\partial \bm{x}}  = \widehat{(\bm{x}-\bm{b})}^T

, 其中

\bm{u} = \bm{x} - \bm{b}

4)

\begin{equation} \begin{aligned} \frac{\partial \hat{\bm{x}}}{\partial \bm{x}}   =\frac{\mathbf{I} -   {\hat{\Pi}_x} }{\|\bm{x}\|}   \end{aligned}  \end{equation};~~

\begin{equation} \begin{aligned}  \frac{\partial \widehat{\bm{x}-\bm{b}}}{\partial \bm{x}}    =\frac{\mathbf{I} -   {\hat{\Pi}_{x-b}} }{\|\bm{x}-\bm{b}\|}   \end{aligned}  \end{equation}

利用乘法法則,

\begin{equation} \begin{aligned} \mathrm{J}_1(\bm{x}) &= \frac{\partial \|\bm{x}\|^{-1}\cdot \bm{x}}{\partial \bm{x}}   =   \|\bm{x}\|^{-1} \frac{\partial \bm{x}}{\partial \bm{x}} + \bm{x}\cdot \frac{\partial u^{-1}}{\partial u} \cdot \frac{\partial u}{\partial \bm{x}} \\  & =  \|\bm{x}\|^{-1} \cdot \mathbf{I} + (-\|\bm{x}\|^{-2})  \cdot\bm{x}\cdot \hat{\bm{x}}^T \\    & =  \frac{\mathbf{I} -  \hat{\bm{x}}\cdot \hat{\bm{x}}^T}{\|\bm{x}\|}     \end{aligned}  \end{equation}

其中

u =  \|\bm{x}\|

, 分子的第二項矩陣

{\hat{\Pi}_x}

稱為向量

\hat{\bm{x}}

的投影矩陣(秩為1);

類似地,

\begin{equation} \begin{aligned}  \mathrm{J}_2(\bm{x}) & = \frac{\partial \hat{\bm{u}}}{\partial \bm{u}}  \cdot  \frac{\partial \bm{u}}{\partial \bm{x}}  =\frac{\mathbf{I} -   {\hat{\Pi}_{x-b}} }{\|\bm{x}-\bm{b}\|}   \end{aligned}  \end{equation}

, 其中

\bm{u} = \bm{x} - \bm{b}

5)

\frac{\partial \bm{x}^{T} \mathbf{A}\bm{x}}{\partial \bm{x}}  =  \bm{x}^{T} (\mathbf{A} + \mathbf{A}^T); ~~~\frac{\partial \bm{x}^T\bm{x}}{\partial \bm{x}} = 2\bm{x}^T

Proof: 利用乘法法則,

\mathrm{J}_1(\bm{x}) =\frac{\partial \bm{x}^{T}\cdot \mathbf{A}\bm{x}}{\partial \bm{x}}  = \bm{x}^{T}\cdot  \frac{\partial \mathbf{A}\bm{x}}{\partial \bm{x}}  + (\mathbf{A}\bm{x})^T \frac{\partial \bm{x}}{\partial \bm{x}} =\bm{x}^{T} (\mathbf{A} + \mathbf{A}^T)

** 當

\mathbf{A} = \mathbf{I}

即可得到

\mathrm{J}_2(\bm{x})

上述結果與 Miles Macklin Blog 中結果一致。

6)**Hessian matrix: 由於標量場的Jacobian Matrix 是行向量,直接對其求偏導欠妥,一般會借用標量場的梯度

\nabla_{\bm{x}} u

定義“二階導”:

\frac{\partial^2 u}{\partial \bm{x}^T\partial \bm{x}}= \frac{\partial (\nabla_{\bm{x}} u)}{\partial \bm{x}} = \left[\begin{array}{ccc}  \frac{\partial^2 u}{\partial x^2} & \frac{\partial^2 u}{\partial x\partial y} & \frac{\partial^2 u}{\partial x\partial z} \\  \frac{\partial^2 u}{\partial y\partial x} & \frac{\partial^2 u}{\partial y^2} & \frac{\partial^2 u}{\partial y\partial z} \\  \frac{\partial^2 u}{\partial z\partial x} & \frac{\partial^2 u}{\partial z\partial y} & \frac{\partial^2 u}{\partial z^2}  \end{array}\right]

而該矩陣的Trace 對應的又是標量場在該點處被 Laplacian Operator 作用的值

\nabla_{\bm{x}}^2 u

7) ** 最小二乘

~~\frac{\partial \|\mathbf{A}\bm{x} - \bm{b}\|^2}{\partial \bm{x}} = 2(\mathbf{A}\bm{x} - \bm{b})^T \mathbf{A}

在超定方程的應用中,一般無法找到恰好

\mathbf{A}\bm{x} = \bm{b}

的準確解

\bm{x}^{\star}

(各行不相容),因此問題轉化為求凸問題

\arg\min_{\bm{x}} \|\mathbf{A}\bm{x} - \bm{b}\|^2

, 只需令

\mathrm{J}(\bm{x})^T = 2(\mathbf{A}^T\mathbf{A} \bm{x} - \mathbf{A}^T \bm{b}) = \bm{0}

轉化為求解

\mathbf{A}^T\mathbf{A} \bm{x} = \mathbf{A}^T \bm{b}

X-by-Matrix

凡是分子或分母出現矩陣的Jacobian Matrix,都在此分討論 。先引入兩個運算:

克羅內克積

\otimes

Kronecker

product)

用於描述兩個任意大小的矩陣間的運算。設

\mathbf{A} \in  \mathbb{R}^{m\times n}, \mathbf{B} \in  \mathbb{R}^{p\times q}

, 則:

\mathbf{A} \otimes \mathbf{B}\triangleq\left[\begin{array}{ccc} a_{11} \mathbf{B} & \cdots & a_{1 n} \mathbf{B} \\ \vdots & \ddots & \vdots \\ a_{m 1} \mathbf{B} & \cdots & a_{m n} \mathbf{B} \end{array}\right] \in  \mathbb{R}^{mp \times nq}

矩陣的向量化:對

\mathbf{A} \in  \mathbb{R}^{m\times n}

\mathrm{vec}(\mathbf{A}) = \bm{a}  \in  \mathbb{R}^{m n}

是將

\mathbf{A}

的所有

拼在一起對應的向量。

為了方便理解和描述規律,下面的矩陣分母統一使用

\mathbf{X} \in \mathbb{R}^{3\times 3}

作為示例,

 \mathrm{vec}(\mathbf{X}) = \left[\begin{array}{ccc|ccc|ccc}  x_{11} & x_{21} & x_{31}& x_{12} & x_{22} & x_{32}& x_{13} & x_{23} & x_{33} \end{array}\right] ^T

之後會用到克羅內克積的一個性質:若

\mathbf{A} \mathbf{X} \mathbf{B} = \mathbf{C}

,則

\mathbf{B}^T \otimes \mathbf{A} \cdot  \mathrm{vec}(\mathbf{X}) = \mathrm{vec}( \mathbf{A} \mathbf{X} \mathbf{B})  = \mathrm{vec}( \mathbf{C})

1。1 標量關於矩陣的

\mathrm{J}(\mathbf{X})

:行向量

Wiki 中將這一運算的結果定義為與

\mathbf{X}

形狀相同的矩陣。這不利於與 向量 Jacobian 的相容。

因此本文采用:

\frac{\partial u}{\partial \mathbf{X}} \triangleq \frac{\partial u}{\partial \mathrm{vec}(\mathbf{X})}  =\left[\begin{array}{c:c:c}   \frac{\partial u}{\partial \mathbf{X} \mathrm{col}(1)} &  \frac{\partial u}{\partial \mathbf{X} \mathrm{col}(2)} &  \frac{\partial u}{\partial \mathbf{X} \mathrm{col}(3)} \end{array}\right] \in \mathbb{R}^{1\times 9}

使用 Jacobian 計算增量:

\Delta u = \mathrm{J}(\mathbf{X}) \cdot  \mathrm{vec}(\Delta\mathbf{X})

Properties

乘法法則:

\frac{\partial u(\mathbf{X}) v(\mathbf{X})}{\partial \mathbf{X}}= u\frac{\partial v}{\partial \mathbf{X}}+ v\frac{\partial u}{\partial \mathbf{X}}

鏈式法則:

\frac{\partial g(u( \mathbf{X}))}{\partial \mathbf{X}}  =\frac{\partial g(u )}{\partial u}  \cdot  \frac{\partial u( \mathbf{X})}{\partial \mathbf{X}}

Examples

1)

\frac{\partial \mathrm{tr}(\mathbf{X})}{\partial \mathbf{X}} =\frac{\partial \mathrm{tr}(\mathbf{X}^T)}{\partial \mathbf{X}} = \mathrm{vec}(\mathbf{I})^T

跡(Trace)僅和對角元素相關;

\frac{\partial \mathrm{tr}(\mathbf{A}\mathbf{X})}{\partial \mathbf{X}} = \mathrm{vec}(\mathbf{A})^T

\frac{\partial \mathrm{tr}(\mathbf{X}^T \mathbf{A}\mathbf{X})}{\partial \mathbf{X}} = \mathrm{vec}[\mathbf{X} (\mathbf{A}+ \mathbf{A}^T)]^T

\frac{\partial \| \mathbf{X} \|^2_{F}}{\partial \mathbf{X}}  = \frac{\partial \mathrm{tr}(\mathbf{X} \mathbf{X}^H)}{\partial \mathbf{X}} = \mathrm{vec}[2\mathbf{X}]^T

2)

\frac{\partial \mathrm{det}(\mathbf{X})}{\partial \mathbf{X}} = \mathrm{vec}[\mathrm{Cofactor} (\mathbf{X})] =  \mathrm{det}(\mathbf{X}) \cdot \mathrm{vec}(\mathbf{X}^{-T})^T

行列式(Determinant)結果對逐元素的偏導為對應元素的代數餘子式(Cofactor);

\frac{\partial  \mathrm{det}( \mathbf{A}\mathbf{X}\mathbf{B})}{\partial \mathbf{X}} =  \mathrm{det}(\mathbf{A}\mathbf{X}\mathbf{B}) \cdot \mathrm{vec}(\mathbf{X}^{-T})^T

\frac{\partial \mathrm{det}(\mathbf{X}^T \mathbf{A}\mathbf{X})}{\partial \mathbf{X}} = 2 ~ \mathrm{det}(\mathbf{X}^T \mathbf{A}\mathbf{X}) \cdot \mathrm{vec}(\mathbf{X}^{-T})^T

1.2

向量關於矩陣

#FormatImgID_76# :寬矩陣

若繼續 Wiki 中 的定義,從這一節開始向下的所有運算都是失效的(結果變為三維張量)。

而若繼續延續上面的定義,有:

\frac{\partial \bm{u}}{\partial \mathbf{X}} \triangleq \frac{\partial \bm{u}}{\partial \mathrm{vec}(\mathbf{X})} =\left[\begin{array}{c:c:c}   \frac{\partial \bm{u}}{\partial \mathbf{X} \mathrm{col}(1)} &  \frac{\partial \bm{u}}{\partial \mathbf{X} \mathrm{col}(2)} &  \frac{\partial \bm{u}}{\partial \mathbf{X} \mathrm{col}(3)} \end{array}\right]  \in \mathbb{R}^{3\times 9}

使用 Jacobian 計算增量:

\Delta \bm{u} = \mathrm{J}(\mathbf{X})\cdot  \mathrm{vec}(\Delta\mathbf{X})

Examples

1)

\frac{\partial \mathbf{X}\bm{b}}{\partial \mathbf{X}}=\bm{b}^T \otimes \mathbf{I}; ~~~ \frac{\partial \bm{a}^T\mathbf{X}\bm{b}}{\partial \mathbf{X}}=\mathrm{vec}(\bm{a}\bm{b}^T)^T

Proof: 驗證 第一個 Joccobian 等價於驗證 Jacobian 計算增量是否正確,即

(\mathbf{X}+ \Delta \mathbf{X})\bm{b} - \mathbf{X}\bm{b} \stackrel{?}{=} \mathrm{J}(\mathbf{X})  \cdot \mathrm{vec}( \Delta\mathbf{X})

分別計算兩側(Left /Right Hand Side):

\mathrm{LHS} =  (\Delta \mathbf{A})\bm{x} =\left[\begin{array}{c} \Delta a_{11} x + \Delta a_{12} y + \Delta a_{13} z \\ \Delta a_{21} x + \Delta a_{22} y + \Delta a_{23} z \\ \Delta a_{31} x + \Delta a_{32} z + \Delta a_{33} z \\ \end{array}\right]

\begin{equation} \begin{aligned}  \mathrm{RHS}  &= (\bm{x}^T \otimes \mathbf{I})  \cdot \mathrm{vec}(\Delta \mathbf{A}) \\ & =\left[\begin{array}{ccc:ccc:ccc} x &0&0 &y &0&0 &z &0&0 \\ 0 &x&0 &0 &y&0 &0 &z&0 \\ 0 &0&x &0 &0&y &0 &0&z \\ \end{array}\right] \end{aligned}   \cdot \left[\begin{array}{ccc:c:ccc}  \Delta a_{11} & \Delta a_{21} & \Delta a_{31}&  \cdots & \Delta a_{13} & \Delta a_{23} & \Delta a_{33} \end{array}\right] ^T  \end{equation}

\mathrm{LHS} = \mathrm{RHS}

根據第一個 Joccobian, 第二個(標量關於矩陣)可推出

\frac{\partial \bm{a}^T\mathbf{X}\bm{b}}{\partial \mathbf{X}} = \bm{a}^T\frac{\partial \mathbf{X}\bm{b}}{\partial \mathbf{X}}

1。3 矩陣關於向量

\mathrm{J}(\bm{x})

:長矩陣

\frac{\partial \mathbf{U}}{\partial \bm{x}} \triangleq \frac{\partial \mathrm{vec}(\mathbf{U})}{\partial  \bm{x}}   =\left[\begin{array}{c}   \frac{\partial  \mathbf{U.\mathrm{col}(1)}}{\partial \bm{x}} \\ \hdashline \frac{\partial  \mathbf{U}.\mathrm{col}(2)}{\partial \bm{x}} \\ \hdashline \frac{\partial \mathbf{U}.\mathrm{col}(3)}{\partial  \bm{x}} \\ \end{array}\right]  \in \mathbb{R}^{9\times 3}

使用 Jacobian 計算增量:

 \Delta\mathbf{U} \triangleq\mathrm{vec}(\Delta\mathbf{U})= \mathrm{J}(\bm{x})\cdot  \Delta\bm{x}

Examples

1) 對角陣

\mathrm{diag}(\bm{x})

和 反對稱陣(定義見Axis-Angle)

\left[\bm{x}\right]_{\times}

\frac{\partial\mathrm{diag}(\bm{x})}{\partial\bm{x}} = \left[\begin{array}{ccc:ccc:ccc} 1 &0&0 &0 &0&0 &0 &0 &0 \\ 0 &0&0 &0 &1&0 &0 &0&0 \\ 0 &0&0 &0 &0&0 &0 &0&1 \\ \end{array}\right]^T

\frac{\partial\left[\bm{x}\right]_{\times}}{\partial\bm{x}} = \left[\begin{array}{ccc:ccc:ccc} 0 &0&0 &0 &0&1 &0 &-1&0 \\ 0 &0&-1 &0 &0&0 &1 &0&0 \\ 0 &1&0 &-1 &0&0 &0 &0&0 \\ \end{array}\right]^T

2) **Axis-Angle 中 位置 關於轉軸的 Joccobian

\frac{\partial  \mathbf{R}(\bm{r})\bm{x} }{\partial \bm{r}}  = -\mathbf{R} [\bm{x} ]_{\times} \{\mathbf{I} - [\hat{\bm{r}} ]_{\times} \frac{1-\mathrm{cos}\theta}{\theta} +  [\hat{\bm{r}} ]_{\times}^2 (1-\frac{\mathrm{sin}\theta}{\theta})\};

\lim_{\bm{r} \rightarrow \bm{0}}\frac{\partial  \mathbf{R}(\bm{r})\bm{x} }{\partial \bm{r}} = -\mathbf{R} [\bm{x} ]_{\times} \mathbf{R}^T = [\mathbf{R}\bm{x} ]_{\times}

Proof: 若直接按照鏈式法則,分析如下:

(Term1) 根據向量關於矩陣 Example 1),

\frac{\partial\bm{x}^{\prime}}{\partial \mathbf{R}} = \bm{x}^T \otimes  \mathbf{I} \in \mathbb{R}^{3\times 9}

(Term2)

\frac{\partial  \mathrm{expm}([\bm{r}]_{\times})}{\partial \bm{r}} \in \mathbb{R}^{9\times 3}

;此項不可再分鏈為

[\bm{r}]_{\times}

作分母,違背各項獨立;

參考paper[Gallego 2015] 中 Eq (8) 及其在論文附錄2中的嚴密推導,並帶入介紹斜交矩陣的文章中其相關性質,即可證明上式成立。

[Table] 矩陣微積分

Proof in paper[Gallego 2015]

上述結果的極限形式與Lie Group的文獻以及另一篇對旋轉矩陣求導的文章的結果一致。

[Table] 矩陣微積分

3) **FEM 中 能量密度關於tetrahedron各頂點位置的梯度 (Joccobian 的轉置)

[\nabla_{\bm{x}_{i1}}   | \nabla_{\bm{x}_{i2}}  | \nabla_{\bm{x}_{i3}} ]\Psi(\mathbf{F}_i) =\mathbf{P}(\mathbf{F}_i)   \cdot   \bar{\mathbf{D}}_i^T

Proof:

首先回顧FEM一節中各部分定義

單個四面體

\mathcal{T}_i

的應變 (strain)基於當前頂點位置的變換計算:

\mathbf{F}_i(\bm{x}_{i1}, \bm{x}_{i2},\bm{x}_{i3}, \bm{x}_{i4})  = \left[\begin{array}{c:c:c} 	\bm{x}_{i1} - \bm{x}_{i4} & \bm{x}_{i2} - \bm{x}_{i4} & \bm{x}_{i3} - \bm{x}_{i4} \\ 	\end{array}  \right] \cdot \bar{\mathbf{D}}_i

其中

\bar{\mathbf{D}}_i \in \mathbb{R}^{3\times 3}

僅和各頂點初始位置有關,視為常量。

而該點處的應變能量密度

\Psi

是關於

\mathbf{F}_i

標量

函式, 而

 \frac{\partial \Psi}{\partial \mathbf{F}_i}

會根據能量密度的定義而預先計算,稱之為應力張量

 \mathbf{P}(\mathbf{F}_i)

因此,Joccobian 計算為:

\frac{\partial \Psi(\mathbf{F}_i)}{\partial \bm{x}_{ik}} = \frac{\partial \Psi}{\partial \mathbf{F}_i} \cdot \frac{\partial \mathbf{F}_i}{\partial \bm{x}_{ik}} = \mathrm{vec}(\mathbf{P}_i)^T\cdot \frac{\partial \mathbf{F}_i}{\partial \bm{x}_{ik}}

棘手之處在於第二項,即 matrix-by-vector Joccobian。結合本節定義

\frac{\partial \mathbf{F}_i}{\partial \bm{x}_{ik}}  \in \mathbb{R}^{9\times 3}

依據定義可得

\frac{\partial \mathbf{F}_i}{\partial \bm{x}_{i1}}  =  \left[\begin{array}{c:c:c}   \bar{d_{11}} \mathbf{I}&  \bar{d_{12}} \mathbf{I} &  \bar{d_{13}} \mathbf{I} \end{array}\right]^T,

\frac{\partial \mathbf{F}_i}{\partial \bm{x}_{i2}}  =  \left[\begin{array}{c:c:c}   \bar{d_{21}} \mathbf{I}&  \bar{d_{22}} \mathbf{I} &  \bar{d_{23}} \mathbf{I} \end{array}\right]^T,

\frac{\partial \mathbf{F}_i}{\partial \bm{x}_{i3}}  =  \left[\begin{array}{c:c:c}   \bar{d_{31}} \mathbf{I}&  \bar{d_{32}} \mathbf{I} &  \bar{d_{33}} \mathbf{I} \end{array}\right]^T,

\frac{\partial \mathbf{F}_i}{\partial \bm{x}_{i4}}  =  -\sum_{k=1}^3\frac{\partial \mathbf{F}_i}{\partial \bm{x}_{ik}} .

進而有

\frac{\partial \Psi(\mathbf{F}_i)}{\partial \bm{x}_{ik}} = \mathrm{vec}(\mathbf{P}_i)^T \frac{\partial \mathbf{F}_i}{\partial \bm{x}_{ik}} =   \bar{\mathbf{D}}_i .\mathrm{row}(k) \cdot \mathbf{P}_i^T, k=1,2,3

因此

\nabla_{\bm{x}_{ik}} \Psi(\mathbf{F}_i) = [\frac{\partial \Psi(\mathbf{F}_i)}{\partial \bm{x}_{ik}} ]^T = = \mathbf{P}_i \cdot  [\bar{\mathbf{D}}_i .\mathrm{row}(k)]^T , k=1,2,3

最終有

[\nabla_{\bm{x}_{i1}}   | \nabla_{\bm{x}_{i2}}  | \nabla_{\bm{x}_{i3}} ]\Psi(\mathbf{F}_i) =\mathbf{P}(\mathbf{F}_i)   \cdot   \bar{\mathbf{D}}_i^T

這與文獻 Siggraph 2012 tutorial [Sifakis 2012] 中利用 Frobenius inner product 求得的結果一致。

[Table] 矩陣微積分

Refs

參考 Blogs

Derivative of a vector with respect to a matrix, From stackexchange;

Derivative of exponential mapping, From stackexchange;

The Matrix Cookbook, By Kaare Brandt Petersen

隱式尤拉積分需要的彈簧Jacobian計算,By Miles Macklin ;

參考 Papers

Gallego, G。 and Yezzi, A。, 2015。 A compact formula for the derivative of a 3-D rotation in exponential coordinates。

Journal of Mathematical Imaging and Vision

51

(3), pp。378-384。

Sifakis, E。 and Barbic, J。, 2012。 FEM simulation of 3D deformable solids: a practitioner‘s guide to theory, discretization and model reduction。 In

Acm siggraph 2012 courses

(pp。 1-50)。