二次形式の行列表現から多項式表現へ
まずは行列表現から多項式表現に変換。
\(
\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比較ページはこちら
コメント