0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

行列式と2次曲線

0
Posted at

はじめに

行列式を用いることで、複雑な多項式の因数分解を行うことができる。
そこで、今回は3次式の多項式を2次式と1次式の多項式の積の形に因数分解する公式を紹介し、証明を行う。次に、具体例を考え、その行列式で表された関数がどのような曲面を描くのか考察する。

行列式の等高線.png

導入

以下の因数分解の公式を行列式を用いて証明せよ。

x^3+y^3+z^3-3xyz=(x+y+z)(x^2+y^2+z^2-xy-yz-zx)

証明

I=

\begin{vmatrix}
   x & y & z\\
   z & x & y\\
   y & z & x
   
\end{vmatrix}


これを、2通りの方法で計算する。

余因子展開

I=x \begin{vmatrix}
   x & y \\
   z & x
\end{vmatrix}

-
z \begin{vmatrix}
   y & z \\
   z & x
\end{vmatrix}

+

y \begin{vmatrix}
   y & z \\
   x & y
\end{vmatrix}

=x(x^2-xy) -z(xy-z^2)+y(y^2-xz)=x^3+y^3+z^3-3xyz

因数分解

行列式の定義

突然だが、3×3の行列式は、3つのベクトルを辺とした平行六面体の体積である。
つまり、



\begin{vmatrix}
   a & 0 & 0\\
   0 & b & 0\\
   0 & 0 & c
   
\end{vmatrix}

=abc

である。つまり、3×3の行列式は3×3の行列の3つの固有値の積である。

固有値

一方で、

\textbf{A}=

\begin{pmatrix}
   x & y & z\\
   z & x & y\\
   y & z & x
   
\end{pmatrix}


とする。この行列の固有値を考えよう。

\begin{pmatrix}
   x & y & z\\
   z & x & y\\
   y & z & x
   
\end{pmatrix}

\begin{pmatrix}
   1\\
   1\\
   1
   
\end{pmatrix}

=(x+y+z)


\begin{pmatrix}
   1\\
   1\\
   1
   
\end{pmatrix}

ここで、$\omega^3=1$となる複素数$\omega$を導入する。

\begin{pmatrix}
   x & y & z\\
   z & x & y\\
   y & z & x
   
\end{pmatrix}

\begin{pmatrix}
   1\\
   \omega\\
   \omega^2\\
   
\end{pmatrix}

=(x+y\omega^2+z\omega)


\begin{pmatrix}
   1\\
   \omega\\
   \omega^2\\
   
\end{pmatrix}
\begin{pmatrix}
   x & y & z\\
   z & x & y\\
   y & z & x
   
\end{pmatrix}

\begin{pmatrix}
   1\\
   \omega^2\\
   \omega\\
   
\end{pmatrix}

=(x+y\omega+z\omega^2)


\begin{pmatrix}
   1\\
   \omega^2\\
   \omega\\
   
\end{pmatrix}

つまり、$\textbf{A}$の固有値は、$(x+y+z)
,(x+y\omega^2+z\omega)
,(x+y\omega+z\omega^2)$となる。

したがって

x^3+y^3+z^3-3xyz=(x+y+z)(x+y\omega^2+z\omega)(x+y\omega+z\omega^2)=(x+y+z)(x^2+y^2+z^2-xy-yz-zx)


となり、題意は示された。

数値計算

さて、$z$が定数のとき

I=

\begin{vmatrix}
   x & y & z\\
   z & x & y\\
   y & z & x
   
\end{vmatrix}


という等高線グラフを$xy$平面に図示したい。

I=(x+y+z)(x^2+y^2+z^2-xy-yz-zx)


例えば、$z=1$の場合は以下のようになる。

I=(x+y+1)(x^2+y^2+1-xy-y-x)


ここで、$I_0=x+y+1$、$I_1=x^2+y^2+1-xy-y-x$であるとする。

$I_0=x+y+1$は直線面を示す。
$I_1=x^2+y^2+1-xy-y-x$は、以下のような二次曲面を示す。

等高線2.png

プログラム

以下のようなプログラムを作成した。

python matrix_3d.py
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math

def det_matrix(x,y,z):
    z_matrix=np.array([[x,y,z],[z,x,y],[y,z,x]])
    #z2=(x**2+y**2+z**2-(x*y+y*z+z*x))*(x+y+z)
    return np.linalg.det(z_matrix)
    #return z2

L=1
n=100
x_ary=np.linspace(-L,L,n)
y_ary=np.linspace(-L,L,n)
X,Y=np.meshgrid(x_ary,y_ary)
Z=np.zeros((n,n))

z=-1

for i in range(n):
    for j in range(n):
        Z[i][j]=det_matrix(X[i][j],Y[i][j],z)

plt.contourf(X,Y,Z,levels=50,cmap='jet')
plt.plot(x_ary,-z-x_ary,'k--')  # x+y=1の線を追加

plt.xlim(-L,L)
plt.ylim(-L,L)

plt.colorbar()
plt.xlabel('x')
plt.ylabel('y')
plt.title('行列式の等高線')
plt.savefig('行列式の等高線.png')
plt.show()

このプログラムを実行すると以下のようになる。

行列式の等高線.png

ある直線を境にしていることが分かる。

まとめ

今回は、巡回行列の行列式を用いて、3次式の因数分解を行なった。
また、その因数分解を利用して、3次曲線の特性を予測した。

参考文献

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?