【入門】二次形式の微分【数値計算】

【入門】二次形式の微分【数値計算】 数値計算
【入門】二次形式の微分【数値計算】

二次形式の行列表現から多項式表現へ

まずは行列表現から多項式表現に変換。

\(
\begin{eqnarray}
f(x_1,x_2)=x^T A x&=&
\begin{bmatrix}
x_1 \\ x_2\\
\end{bmatrix}^T
\begin{bmatrix}
a_1 & a_2 \\
a_2 & a_3
\end{bmatrix}
\begin{bmatrix}
x_1\\x_2
\end{bmatrix}
\\&=&
\begin{bmatrix}
a_1x_1+a_2x_2 \\ a_2x_1+a_3x_2\\
\end{bmatrix}^T
\begin{bmatrix}
x_1\\x_2
\end{bmatrix}\\
&=&a_1x_1^2+a_2x_1x_2+a_2x_1x_2+a_3x_2^2\\
&=&a_1x_1^2+2a_2x_1x_2+a_3x_2^2
\end{eqnarray}
\)

二次形式の勾配

そして、二次形式の勾配は\(\nabla f(x_1,x_2)\)と表現できるので、以下になる。

\(
\begin{eqnarray}
\nabla f(x_1,x_2)&=&
\begin{bmatrix}
\displaystyle\frac{\partial f(x_1,x_2)}{\partial x_1} \\
\displaystyle\frac{\partial f(x_1,x_2)}{\partial x_2}\\
\end{bmatrix}=
\begin{bmatrix}
2a_1x_1+2a_2x_2 \\
2a_2x_1+2a_3x_2 \\
\end{bmatrix}\\&=&
2
\begin{bmatrix}
a_1x_1 + a_2x_2 \\
a_2x_1 + a_3x_2 \\
\end{bmatrix}=
2
\begin{bmatrix}
a_1 & a_2 \\
a_2 & a_3 \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
x_2 \\
\end{bmatrix}\\&=&
2Ax
\end{eqnarray}
\)

よって、以下になる。

\(
\nabla x^T Ax=2Ax
\)

ベクトルの中の足し算が、行列になっている点に疑問を覚えたかもしれない。

ベクトル内の足し算が行列に変形される理由

もう少し丁寧に書くとこんな感じになる。

\(
\begin{eqnarray}
\begin{bmatrix}
a_1x_1 + a_2x_2 \\
a_2x_1 + a_3x_2 \\
\end{bmatrix}&=&
\begin{cases}
a_1x_1+a_2x_2\\
a_2x_1+a_3x_2
\end{cases}\\
\begin{bmatrix}
a_1 & a_2 \\
a_2 & a_3 \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
x_2 \\
\end{bmatrix}&=&
\begin{cases}
a_1x_1+a_2x_2\\
a_2x_1+a_3x_2
\end{cases}\\
\end{eqnarray}
\)

つまり、方程式として考えれば同一と言っているだけ。

これにより、二次形式の微分(勾配)が簡単に求められることがわかったと思う。

具体的な多項式に対して二次形式の微分を実施

体的な多項式に対して、二次形式の微分を求める。
使用する多項式は以下とする。

\(
f(x,y)=3x^2+2y^2+5xy
\)

∇による偏導関数

まずは\(\nabla\)による偏導関数。

\(
\nabla f(x,y)=
\begin{bmatrix}
\displaystyle\frac{\partial f(x,y)}{\partial x}\\
\displaystyle\frac{\partial f(x,y)}{\partial y}\\
\end{bmatrix}=
\begin{bmatrix}
6x+5y\\
5x+4y
\end{bmatrix}
\)

上記を元に以下が成立すればOK。

\(
2AX=
\begin{bmatrix}
6x+5y\\
5x+4y
\end{bmatrix}
\)

普通に手計算

あとは、これを各ツール、各言語で確認する予定だが、
実は手計算でも確認できてしまう。

\(
A=
\begin{bmatrix}
3 & 5/2\\
5/2 & 2
\end{bmatrix}
\)
\(
2AX=
2
\begin{bmatrix}
3 & 5/2\\
5/2 & 2
\end{bmatrix}
\begin{bmatrix}
x\\
y
\end{bmatrix}=
\begin{bmatrix}
6x+5y\\
5x+4y
\end{bmatrix}
\)

つまり、ツールで計算させるまでもない。
よって、この部分をツールで計算させるのは、
単にツールに慣れることを、目的とした作業になると思う。

まとめ

  • ∇について説明。
  • 二次形式の微分について説明。
  • 具体的な多項式に当てはめて計算してみた。

MATLAB、Python、Scilab、Julia比較ページはこちら

コメント

タイトルとURLをコピーしました