公式まとめ

SO(3)への射影関数

任意の三次元回転SO(3)と回転ベクトルとの対応を考えると

\begin{eqnarray}
R &=& \exp(\vec{\theta}) \equiv \exp \left( 
  \theta_{x} \left( 
\begin{array}{ccc}
      0 & 0 & 0 \\
      0 & 0 & -1 \\
      0 & 1 & 0
    \end{array}
  \right) + 
\theta_{y} \left( \begin{array}{ccc}
      0 & 0 & 1 \\
      0 & 0 & 0 \\
      -1 & 0 & 0
    \end{array}
  \right) + 
\theta_{z} \left( \begin{array}{ccc}
      0 & -1 & 0 \\
      1 & 0 & 0 \\
      0 & 0 & 0
    \end{array}
  \right)
\right) \\\
&=& exp(\lfloor \vec{\theta} \rfloor)
\end{eqnarray}

つまり、 \expは3次元ベクトルをSO(3)の3×3行列に変換する関数である。

回転行列の性質

以下のような2つの座標があるとする。 \vec{x}^{B}, \vec{y}^{B}, \vec{z}^{B}をそれぞれ座標系Aにおいて座標Bのx軸、y軸、z軸を表すベクトルであるとする。

座標系の定義
このとき

\begin{eqnarray}
R_{A}^{B} = (\vec{x}^{B}, \vec{y}^{B}, \vec{z}^{B})
\end{eqnarray}

となる。これは

\begin{eqnarray}
(\vec{x}^{B}, \vec{y}^{B}, \vec{z}^{B})\vec{x}^{A} &=& (\vec{x}^{B}, \vec{y}^{B}, \vec{z}^{B}) \left( \begin{array}{c} 1 \\ 0 \\ 0 \end{array} \right) &=&  \vec{x}^{B} \\
(\vec{x}^{B}, \vec{y}^{B}, \vec{z}^{B})\vec{y}^{A} &=& (\vec{x}^{B}, \vec{y}^{B}, \vec{z}^{B}) \left( \begin{array}{c} 0 \\ 1 \\ 0 \end{array} \right) &=&  \vec{y}^{B} \\
(\vec{x}^{B}, \vec{y}^{B}, \vec{z}^{B})\vec{z}^{A} &=& (\vec{x}^{B}, \vec{y}^{B}, \vec{z}^{B}) \left( \begin{array}{c} 0 \\ 0 \\ 1 \end{array} \right) &=&  \vec{z}^{B} \\
\end{eqnarray}

が成立することから理解できる。

射影関数に関する定理

\begin{eqnarray}
\exp(\theta+\Delta \theta) &\sim& \exp(\theta)\exp(J_{r}(\theta)\Delta \theta) \ \ \ \ \ (1) \\\
\exp(\theta) &\sim& I + \lfloor \theta \rfloor \ \ \ \ \ (2)
\end{eqnarray}

参考: https://arxiv.org/pdf/1512.02363.pdf

skew symmetric matrixに関する定理

  • 任意のベクトル \vec{u} {v}に対して
\begin{equation}
\lfloor \vec{u} \rfloor \vec{v} = \vec{u} \times \vec{v} \ \ \ (3)
\end{equation}

証明 成分を書き下すことで容易に示せる。

  • 任意のベクトル \vec{u} {v}に対して
\begin{equation}
\lfloor \vec{u} \rfloor \vec{v} =- \lfloor \vec{v} \rfloor \vec{u} \ \ \ (4)
\end{equation}

証明

\begin{eqnarray}
\lfloor \vec{u} \rfloor \vec{v} &=& \vec{u} \times \vec{v} \\\
&=& - \vec{v} \times \vec{u} \\\
&=& - \lfloor \vec{v} \rfloor \vec{u}
\end{eqnarray}

  • SO(3)の行列 Rとベクトル \vec{u}に対して
\begin{equation}
\lfloor R \vec{u} \rfloor = R \lfloor \vec{u} \rfloor R^\mathsf{T} \ \ \ (5)
\end{equation}

証明 任意のベクトル \vec{v} \vec{w}を導入し、

\begin{eqnarray}
\vec{v}^\mathsf{T} \lfloor A\vec{v} \rfloor \vec{w} &=& \vec{v} \cdot (\lfloor A\vec{u} \rfloor \vec{w}) \\\
&=& \vec{v} \cdot (A\vec{u} \times \vec{w}) \\\
&=& \left| (\vec{v}, A\vec{u}, \vec{w})\right| \\\
&=& \left| A (A^{-1}\vec{v}, \vec{u}, A^{-1}\vec{w} )\right| \\\
&=& |A| \left| (A^{-1}\vec{v}, \vec{u}, A^{-1}\vec{w})\right| \\\
&=& |A| (A^{-1}\vec{v})^\mathsf{T} \cdot (\vec{u}\times A^{-1}\vec{w}) \\\
&=& |A| \vec{v}^\mathsf{T} (A^{-1})^\mathsf{T} \lfloor \vec{u} \rfloor A^{-1} \vec{w}
\end{eqnarray}

式を見比べると

\begin{equation}
\lfloor A\vec{v} \rfloor = |A| (A^{-1})^\mathsf{T} \lfloor \vec{u} \rfloor A^{-1}
\end{equation}

特に AがSO(3)回転群 Rであれば

\begin{equation}
\lfloor R\vec{v} \rfloor =R \lfloor \vec{u} \rfloor R^\mathsf{T}
\end{equation}

逆変換に関する定理

任意の座標系 a bについて

\begin{equation}
{}^{a}\vec{p}_{b} = - {}^{b}_{a}R^\mathsf{T}\ {}^{b}\vec{p}_{a} \ \ \ \ \ (6)
\end{equation}

証明 SE(3)の4×4行列を考えると、逆変換は

\begin{equation}
\left( \begin{array}{cc}
      {}^{b}_{a}R & {}^{b}\vec{p}_{a} \\
      \vec{0} & 1
    \end{array}
  \right) \left( \begin{array}{cc}
      R^{'} & \vec{p}^{'} \\
      \vec{0} & 1
    \end{array}
  \right)  =  I
\end{equation}

となるべきなので

\begin{eqnarray}
{}^{b}_{a}R \vec{p}^{'} + {}^{b}\vec{p}_{a} &=& 0 \\\
\vec{p}^{'} &=& - {}^{b}_{a}R^\mathsf{T}\ {}^{b}\vec{p}_{a}
\end{eqnarray}

left null space

ある行列 Cに対するleft null spaceとは

\begin{equation}
\vec{x}^\mathsf{T}C = \vec{0}
\end{equation}

を満たすベクトル \vec{x}の集合のことである。left null spaceの次元は行列 Cの列数から行列 Cの次元(rank)を引いたものである。

行列の性質

逆行列と転置の可換性

正方行列 Aに対して逆行列が存在するとき、転置と逆行列は可換である。すなわち

\begin{eqnarray}
(A^\mathrm{T})^{-1} = (A^{-1})^\mathrm{T}
\end{eqnarray}

証明

\begin{eqnarray}
I &=& I^\mathrm{T} \\
(AA^\mathrm{-1})^\mathrm{T} \\
&=& (A^{-1})^\mathrm{T} A^\mathrm{T} \\
\end{eqnarray}

となることが示せるので、逆行列の定義より (A^{-1})^\mathrm{T} A^\mathrm{T}逆行列であること、すなわち

\begin{eqnarray}
(A^\mathrm{T})^{-1} = (A^{-1})^\mathrm{T}
\end{eqnarray}

が示された。

Gram行列に関する性質

行列 Aに対して A^\mathrm{T}AをGram行列と呼ぶ。
- 定理:Graph行列のrankは元の行列のrankに等しい

証明  A m \times nだとして、 Aあるいは A^\mathrm{T}Aを作用させる n次元空間があったとして、ランクはnからカーネル空間を引いた値として定義される。 A A^\mathrm{T}Aカーネル空間を考える。 -  A\vec{x}=\vec{0}であるとき

\begin{eqnarray}
A^\mathrm{T}A\vec{x} = A^\mathrm{T}\vec{0} = \vec{0}
 \end{eqnarray}

となるので A^\mathrm{T}A\vec{x}=\vec{0}となることが示された。

  •  A^\mathrm{T}A\vec{x}=\vec{0}であるとき
\begin{eqnarray}
|A\vec{x}|^{2} &=& \vec{x}^\mathrm{T} A^\mathrm{T}A\vec{x} \\
&=& \vec{x}^\mathrm{T}\vec{0} \\
&=& \vec{0}
 \end{eqnarray}

となるので A^\mathrm{T}A\vec{x}=\vec{0}となることが示された。

以上より A A^\mathrm{T}Aカーネル空間が一致するのでrankも一致する。

Gram-Schmidtの直交化法

一時独立なベクトルの組 {\vec{a}_{1}, \vec{a}_{2}, \cdots , \vec{a}_{n}}から、正規直交規定  {\vec{v}_{1}, \vec{v}_{2}, \cdots , \vec{v}_{n}}を作成する手順である。
1.  \vec{v}_{1} = \frac{\vec{a}_{1}}{|\vec{v}_{1}|}により \vec{v}_{1}を求める。
2.  \vec{u}_{2} = \vec{a}_{2} - (\vec{a}_{2} \cdot \vec{v}_{1}) \vec{v}_{1}として \vec{u}_{2}を求め、 \vec{v}_{2} = \frac{\vec{u}_{2}}{|\vec{u}_{2}|}により \vec{v}_{2}を求める。
3.  \vec{u}_{3} = \vec{a}_{3} - (\vec{a}_{3} \cdot \vec{v}_{2}) \vec{v}_{2} - (\vec{a}_{3} \cdot \vec{v}_{1}) \vec{v}_{1}として \vec{u}_{3}を求め、 \vec{v}_{3} = \frac{\vec{u}_{3}}{|\vec{u}_{3}|}により \vec{v}_{3}を求める。
以下同様である。イメージ的には、既に基底が張られた平面に \vec{a}を射影し、その射影ベクトルと \vec{a}の差分ベクトルを求めることで基底平面に垂直なベクトルを求めることに相当する。

Gram-Schmidt直交化法により \vec{v}_{1} \vec{v}_{2}から \vec{v}_{3}を求めるイメージ

参考

グラム・シュミットの直交化法とQR分解 - 初級Mathマニアの寝言

グラムシュミットの直交化法の意味と具体例 | 高校数学の美しい物語

QR分解

任意の m\times n行列 Mに対するQR分解とは、ある m\times mの直行行列 Q m\times nの上三角行列 Rを使って

\begin{equation}
M = QR = Q\left( 
\begin{array}{cccc}
      \cdot &  \cdot &  \cdot &  \cdot \\
      0 &  \cdot &  \cdot &  \cdot \\
      0 & 0 &  \cdot &  \cdot \\
      0 & 0 & 0 &  \cdot 
    \end{array}
  \right)
\end{equation}

と分解することである。任意の行列に対してこのように分解できることが保証されている。行列 Q Rの次元によって「full QR分解」と「reduced QR分解」の2通りがある。

  • full QR分解
     M=QR Q m \times m行列、 R m \times n行列
  • reduced QR分解
     M=QR Q m \times n行列、 R n \times n行列

QR分解に関する定理

 m \gt nであり、行列 Mがフルランクである( \mathrm{rank}(M)=n)とき、reduced QR分解による行列 R正則行列となる。またこのとき対角成分が全て正となるような Rが一意に存在する。

QR分解ができることの証明  m \times n行列の A A=(\vec{a}_{1}, \vec{a}_{2}, \cdots , \vec{a}_{n})と表すとする。 \mathrm{rank}(A) = nなので、上の列ベクトルは互いに一時独立である。したがってGram-Schmidtの直交化法を行うことで

\begin{eqnarray}
c_{1} \vec{v}_{1} &=& \vec{a}_{1} \\
c_{2} \vec{v}_{2} &=& \vec{a}_{2} - (\vec{a}_{2} \cdot \vec{v}_{1})\vec{v}_{1} \\
c_{3} \vec{v}_{3} &=& \vec{a}_{3} - (\vec{a}_{3} \cdot \vec{v}_{2})\vec{v}_{2} -  (\vec{a}_{3} 
\cdot \vec{v}_{1})\vec{v}_{1} \\
&\vdots& \\
c_{n} \vec{v}_{n} &=& \cdots
\end{eqnarray}

が求まる。 {\vec{v}_{1}, \vec{v}_{2}, \cdots, \vec{v}_{n}}は正規直交基底である。これを \vec{a}についての形に直すと

\begin{eqnarray}
\vec{a}_{1} &=& c_{1} \vec{v}_{1} \\
\vec{a}_{2} &=& c_{2} \vec{v}_{2} + (\vec{a}_{2} \cdot \vec{v}_{1})\vec{v}_{1} \\
\vec{a}_{3} &=& c_{3} \vec{v}_{3} + (\vec{a}_{3} \cdot \vec{v}_{2})\vec{v}_{2} +  (\vec{a}_{3} 
\cdot \vec{v}_{1})\vec{v}_{1} \\
&\vdots& \\
\vec{a}_{n} &=& \cdots
\end{eqnarray}

となる。行列の形で書くと

\begin{eqnarray}
(m \times n) &=& (m \times n) \times (n \times n) \\
\left( \vec{a}_{1} \vec{a}_{2} \cdots \vec{a}_{n} \right) &=& \left( \vec{v}_{1} \vec{v}_{2} \cdots \vec{v}_{n} \right) \left( \begin{array}{cccc} c_{1} & \vec{a}_{2} \cdot \vec{v}_{1} & \vec{a}_{3} \cdot \vec{v}_{1} & \vec{a}_{4} \cdot \vec{v}_{1} \\ 0 & c_{2} & \vec{a}_{3}\cdot \vec{v}_{2}  &  \vec{a}_{4} \cdot \vec{v}_{2} \\ 0 & 0 & c_{3} & \vec{a}_{4}\cdot \vec{v}_{3} \\ 0 & 0 & 0 & \vdots \end{array} \right) \\
&\equiv& QR
\end{eqnarray}

となりQR分解できることが示せた。変形のイメージとしては である。これはreduced QR分解の形であるが、適当に基底を足しつつR側にも0成分の行を足すことで

\begin{eqnarray}
QR = \left( \vec{v}_{1} \vec{v}_{2} \cdots \vec{v}_{n}, \vec{v}_{n+1}, \vec{v}_{n+2}, \cdots, \vec{v}_{m} \right) \left( \begin{array}{ccccccc} c_{1} & \vec{a}_{2} \cdot \vec{v}_{1} & \vec{a}_{3} \cdot \vec{v}_{1} & \vec{a}_{4} \cdot \vec{v}_{1} & \cdots & 0 & 0 \\ 0 & c_{2} & \vec{a}_{3}\cdot \vec{v}_{2}  &  \vec{a}_{4} \cdot \vec{v}_{2}  & \cdots & 0 & 0 \\ 0 & 0 & c_{3} & \vec{a}_{4}\cdot \vec{v}_{3} & \cdots & 0 & 0 \\ \vdots & & & & & & \\ 0 & 0 & 0 &  0 & \cdots & 0 & 0 \end{array} \right)
\end{eqnarray}

となり、full QR分解の形に持っていくこともできる。

Eigenを使ったQR分解

EigenのcolPivHoseholderQrを使うと、Rの対角要素が絶対値の降順にソートされたQR分解が実施できる。具体的には交換行列 Pを使って

\begin{eqnarray}
AP = QR
 \end{eqnarray}

と分解できる。この動作を確かめてみる。

#include <Eigen/Dense>
#include <iostream>

int main() {
  Eigen::Matrix3f A;
  A << 1,2,3,4,5,6,7,8,10;
  auto qr = A.colPivHouseholderQr();
  const Eigen::Matrix3f Q(qr.householderQ());
  Eigen::Matrix3f R;
  R.triangularView<Eigen::Upper>() = qr.matrixR().triangularView<Eigen::Upper>();
  const auto p = qr.colsPermutation().indices();
  Eigen::Matrix3f P;
  for (int i=0; i<3; i++) {
    for   (int j=0; j<3; j++) {
      P(i, j) =  (p[j]==i)?1:0;
    }
  }
  std::cout << "p=\n" << p << std::endl;
  std::cout << "P=\n" << P << std::endl;
  std::cout << "AP=\n" << A * P << std::endl;
  std::cout << "QR=\n" << Q * R << std::endl;
};

コンパイル

g++ -I/usr/local/var/homebrew/linked/eigen test.cpp

出力結果

p=
2
0
1
P=
0 1 0
0 0 1
1 0 0
AP=
 3  1  2
 6  4  5
10  7  8
QR=
       3 0.999999        2
       6        4        5
      10        7        8

となり、 AP QRが一致することが確認できた。

参考

グラム・シュミットの直交化法とQR分解 - 初級Mathマニアの寝言

QR分解ができると何が嬉しいか

QR分解をすることで、

\begin{equation}
A\vec{x} = \vec{y}
\end{equation}

の方程式を A逆行列を計算せずに求めることができる。

 A m \times nのフルランク行列、 \vec{x}をn行ベクトル、 \vec{y}をm行ベクトルとする行列 A A = QRのようにreduced QR分解( Q m \times n R n \times n)したとすると、

\begin{eqnarray}
QR \vec{x} &=& \vec{y} \\
Q^{\mathsf{T}}QR \vec{x} &=& Q^{\mathsf{T}} \vec{y} \\
R \vec{x} &=& Q^{\mathsf{T}} \vec{y}
\end{eqnarray}

ここで Rは正則な上三角行列になるから、対角成分は左上から右下まで0でない値が詰まっている。したがって、各行この方程式を下の行から解いていくことで、 R逆行列を計算しなくても \vec{x}を求めることができる。

QR分解を使って正規方程式を解く

LU分解

LU分解とは

 n \times nの正方行列 Aに対して、 n \times nの下三角行列 Lと上三角行列 Uを使って

\begin{equation}
A = LU
\end{equation}

と分解することである。

LU分解のイメージ

LU分解できる必要十分条件

LU分解できる必要十分条件は、「 Aの全ての主座小行列の行列式が0にならないこと」である。

ここで、 Aの主座小行列とは、各 i=1, 2, \dots, nに対して

\begin{eqnarray}
\left(\begin{array}{cccc}
      a_{11} & a_{12} &  \cdot &  a_{1i} \\
      a_{21} &  a_{22}  &  \cdot &  a_{2i} \\
      \cdot & \cdot &  \cdot & \cdot \\
      a_{i1} & a_{i2} & \cdot &  a_{ii} 
    \end{array}
  \right)
\end{eqnarray}

の行列である。

特異値分解(SVD)

特異値分解(Singular Value Decomposition)とは、正方行列に限らない任意の m\times nの行列 A(rankを rとする)を m\times m n\times nの直行行列 U, Vおよび r\times rの対角行列 \Sigmaを使って

\begin{equation}
A = U \Sigma V^\mathsf{T}
\end{equation}

と分解する操作である。 \Sigmaの対角成分は値が大きい順にソートすることができる。任意の行列に対してこの分解ができることが保証されている。これは正方行列に対する固有値分解を非正方行列に拡張したようなものである。固有値分解に必要な直行行列は1種類であったが特異値分解に必要な直行行列は2種類である。特異値分解は次元削減によく使われて、これは \Sigmaのうち値が大きいもののいくつかのみを使うというイメージである。もう少しわかりやすい形で示すと

\begin{eqnarray}
A &=& (\vec{u}_{1}, \vec{u}_{2}, \dots, \vec{u}_{r}) \left( \begin{array}{cccc} \sigma_{1} & 0 & 0 & 0 \\ 0 & \sigma{2} & 0 & 0 \\ 0 & 0 & \sigma{3} & 0 \\ 0 & 0 & 0 & \sigma{4} \end{array} \right)  \left( \begin{array}{c} \vec{v}_{1}^\mathsf{T} \\ \vec{v}_{2}^\mathsf{T} \\ \vec{v}_{3}^\mathsf{T} \\ \vec{v}_{4}^\mathsf{T} \end{array} \right) \\
&=& (\sigma_{1}\vec{u}_{1}, \sigma_{2}\vec{u}_{2}, \dots, \sigma_{r}\vec{u}_{r}) \left( \begin{array}{c} \vec{v}_{1}^\mathsf{T} \\ \vec{v}_{2}^\mathsf{T} \\ \vec{v}_{3}^\mathsf{T} \\ \vec{v}_{4}^\mathsf{T} \end{array} \right) \\
&=& \left( \begin{array}{cccc} \sigma_{1}u_{11} & \sigma_{2}u_{21} & \dots & \dots \\ \sigma_{1}u_{12} & \sigma_{2}u_{22} & \dots & \dots \\ \dots & & & \\ \sigma_{1}u_{1m} & \sigma_{2}u_{2m} & \dots & \dots \end{array} \right) \left( \begin{array}{cccc} v_{11} & v_{12} & \dots & \dots \\ v_{21} & v_{22} & \dots & \dots \\ \dots & & & \\ v_{r1} & v_{r2} & \dots & \dots \end{array} \right) \\
&=& \left( \begin{array}{cccc} \sigma_{1}u_{11}v_{11}+\sigma_{2}u_{21}v_{21}+ \dots & & & \\ \sigma_{1}u_{12}v_{11}+\sigma_{2}u_{22}v_{22}+\dots & & & \\ \dots & & & \\ \dots & & & \end{array} \right) \\
&=& \sigma_{1}\vec{u}_{1}\vec{v}_{1}^\mathsf{T} + \sigma_{2}\vec{u}_{2}\vec{v}_{2}^\mathsf{T} + \dots
\end{eqnarray}

となるので、 \sigma_{i}が行列の係数としてかかっている。なので \sigma_{i}が大きいものをいくつか取れば行列 Aにおおよそ近いものを得ることができる。行列 Aの自由度は m\times nであるのに対して行列 \vec{u}_{i}\vec{v}_{i} m+nの自由度なので、小さい自由度の行列で大きい自由度の行列を表現しようとしている操作に対応することがわかる。

特異値分解の主成分分析への応用

ある m次元の観測 \vec{x}_{i} n個あったとき、観測行列は

\begin{equation}
X = ( \vec{x}_{1}, \vec{x}_{2}, \dots, \vec{x}_{n})
\end{equation}

という m \times n行列で表される。
主成分分析は C_{X}=\frac{1}{n}XX^\mathrm{T}固有値問題として表される。これは特異値分解を使って解くことができる。

 X^\mathrm{T}特異値分解 X^\mathrm{T} = U\Sigma V^\mathrm{T}とすると

\begin{eqnarray}
C_{X} &=&  \frac{1}{n}XX^\mathrm{T} \\
&=& \frac{1}{n}XX^\mathrm{T} \\
&=& \frac{1}{n} (U\Sigma V^\mathrm{T})^\mathrm{T} U\Sigma V^\mathrm{T} \\
&=& \frac{1}{n} V \Sigma^\mathrm{T} U^\mathrm{T} U\Sigma V^\mathrm{T} \\
&=& V (\frac{1}{n} \Sigma^{2}) V^\mathrm{T}
\end{eqnarray}

となる。 \frac{1}{n} \Sigma^{2}は対角行列なのでので、これは Vで対角化できていることになる。すなわち共分散行列の固有ベクトル Vで表されることを意味するので、主成分が Vで表されることを意味する。

数学的には C_{X}固有ベクトルを求めることと X^\mathrm{T}特異値分解をすることで同等の結果が得られることが示されたが、数値計算を行う上ではここにあるように特異値分解の方が数値計算誤差を小さくできるらしい。

ベクトルでの微分

 \vec{a}, \vec{x}をベクトル、 A, Bを行列とする。

\begin{eqnarray}
\frac{\partial }{\partial \vec{x}}(\vec{a}^\mathsf{T}\vec{x}) &=& \frac{\partial }{\partial \vec{x}}(\vec{x}^\mathsf{T}\vec{a}) = \vec{a}^\mathsf{T} \\
\frac{\partial }{\partial \vec{x}}(\vec{x}^\mathsf{T}A\vec{x}) &=& 2\vec{x}^\mathsf{T}A \\
\frac{\partial }{\partial A}(Tr(AB)) &=& B^\mathsf{T} \\
\because \frac{\partial }{\partial a_{ij}} (Tr(AB)) &=& \frac{\partial }{\partial a_{ij}} \sum_{kl}a_{kl}b_{lk} \\
&=& \sum_{kl}\delta_{ik}\delta_{jl}b_{lk} \\
&=& b_{ji} 
\end{eqnarray}

参考

行列の微分の導出 - Qiita

Frobenius norm

行列 Aに対するFrobenius normの二乗  ||A||^{2}

\begin{equation}
||A||^{2} = \mathrm{Tr}(A^\mathsf{T} A) = \sum_{ij}a_{ij}^{2}
\end{equation}

と定義される。また

\begin{equation}
\frac{\partial}{\partial R}||A-RB||^{2} = -2AB^\mathsf{T} + 2RBB^\mathsf{T}
\end{equation}

となる。

証明

\begin{eqnarray}
\frac{\partial}{\partial r_{ij}}||A-RB||^{2} &=& \frac{\partial}{\partial r_{ij}} \mathrm{Tr}\left[ (A-RB)^\mathsf{T}(A-RB) \right] \\
&=& \frac{\partial}{\partial r_{ij}} \sum_{kl}(A-RB)_{kl}(A-RB)_{kl} \\
&=& \frac{\partial}{\partial r_{ij}} \sum_{kl}(a_{kl}-r_{km}b_{ml})(a_{kl}-r_{kn}b_{nl}) \\
&=& (-\delta_{ik}\delta_{jm}b_{ml})(a_{kl}-r_{kn}b_{nl}) + (a_{kl}-r_{km}b_{ml})(-\delta_{ik}\delta_{jn}b_{nl}) \\
&=& -2(a_{il}-r_{im}b_{ml})b_{jl} \\
&=& -2\left[ (A-RB)B^\mathsf{T} \right]_{ij}
\end{eqnarray}

となるので

\begin{equation}
\frac{\partial}{\partial R}||A-RB||^{2} = -2AB^\mathsf{T} + 2RBB^\mathsf{T}
\end{equation}

となり題意は示された。

参考 

https://lcvmwww.epfl.ch/teaching/modelling_dna/index.php?dir=exercises&file=corr02.pdf

http://mars.cs.umn.edu/tr/reports/Trawny05b.pdf

Tips of Robotics / 行空間、列空間、零空間 /mathematics