数ならぬ

理学系のこと、特に数学について書きます。雑学的な知識もまとめていく所存。

暇ですか?楕円回しませんか?

 暇な人間ほど何かを回したがる。例えば、ペン回し。例えばハンドスピナー。回転という動きがあるが単純な現象に、我々は強く惹かれるようである。では、ペンでもハンドスピナーでもないものを回してみよう。それは楕円である。

 図形を回転させるというのは数学では難しいことのように思えるが、実際そこまで難しいことではない。ただ、ほんのりと高度な知識を要求されるだけである。

 

 一つ目の準備として行列というものにほんの少しだけ触れておこう。行列というのは図形を引き延ばしたり反転させたりするための道具である。

 図形を引き延ばす、反転させるなどの単純な変換のことを線形変換と呼ぶ。もっと厳密なことも言えるが、行列が単純な変換を一本化できる、とても便利なツールだということがわかれば十分である。

 さて、行列というのは下のような見た目をしている数の集まりである。

\begin{pmatrix} a & b \\ c & d \end{pmatrix}

この数の集まりがどんな物語を展開してくれるのだろうか。ここで、行列

\begin{pmatrix} a & b \\ c & d \end{pmatrix}

とベクトル\begin{pmatrix} x \\ y \end{pmatrix}\stackrel{\mathrm{def}}{=}(x, y)の積を

\begin{pmatrix} a & b \\ c & d \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix}=\begin{pmatrix} ax+by \\ cx+dy \end{pmatrix}

というふうに定義する。このように複雑に定義された積は色々と興味深い性質を満たすが、今回はあまり深入りしないことにする。

 このようにベクトルと行列の積を定義したことで、さまざまな変換が一つの行列という概念のみで行える。

 例えば次のような行列を考えてみよう。

\begin{pmatrix}a & 0 \\ 0 & b\end{pmatrix}

 これとベクトル\begin{pmatrix}x \\ y\end{pmatrix}の積を計算してみると、

\begin{pmatrix}a & 0\\0 & b\end{pmatrix}\begin{pmatrix}x \\ y\end{pmatrix}=\begin{pmatrix}ax+0y \\ 0x+by \end{pmatrix} =\begin{pmatrix} ax \\ by \end{pmatrix}

が成り立つことがわかる。つまりこの行列はベクトルのx成分をa倍、y成分をb倍する変換に対応していたわけだ。

 また行列\begin{pmatrix} 0 & 1 \\ 1 & 0\end{pmatrix}という行列について考える。この行列とベクトルの積を計算すると、

\begin{pmatrix} 0 & 1\\1 & 0 \end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}=\begin{pmatrix}y\\x\end{pmatrix}

となってx軸とy軸を入れ替えるような操作に対応していることがわかる。つまりy=xに対して対称に折り返すような変換である。

 そして今回最も大切なのが、次のように定義される行列R_{\theta}である。

回転行列の定義
R_{\theta}=\begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta\end{pmatrix}

 名前から想像がつく通り、この行列こそが我々の知りたかった回転の変換を与えてくれるものである。次のような定理が成り立つ。

ベクトルの回転
R_{\theta}\begin{pmatrix} x\\y\end{pmatrix}の積は\begin{pmatrix} x\\y\end{pmatrix}を原点Oを中心に角度\thetaだけ反時計まわりに回転させたベクトルである

Proof

どんな二次元ベクトルでも長さrと偏角\alphaを用いて、\begin{pmatrix}x\\y\end{pmatrix}=\begin{pmatrix}r\cos\alpha\\r\sin\alpha\end{pmatrix}と書くことができる。これに回転行列\begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta\end{pmatrix}をかけると \begin{pmatrix}r\cos\theta\cos\alpha-r\sin\theta\sin\alpha\\r\sin\theta\cos\alpha+r\cos\theta\sin\alpha\end{pmatrix}

 これを三角関数の加法定理を用いて変形すると、\begin{pmatrix}r\cos(\theta+\alpha)\\r\sin (\theta+\alpha)\end{pmatrix}となり、これは元のベクトルを原点中心に反時計まわり角度\thetaだけ回転させたベクトルになっている◽︎

行列を用いるとベクトルの回転を容易に行えることがわかった。

 二つ目の道具を用意する。これは高校数学でも勉強する、関数の平行移動の一般化となっている。

その前に、関数を少し拡張した概念を定義する。

関数の零点集合
関数f:{\mathbb{R}}^n\mapsto\mathbb{R}に対して零点集合をG_f=\{x\in{\mathbb{R}}^n\hspace{1mm}\big|\hspace{1mm}f(x)=0\}と定義する

零点集合のfをうまく定めてやることで、さまざまな集合が表現できる。

表現可能な集合の例

任意の実数の部分集合は表現可能である。実数の部分集合Aに対してf_A (x)x\in Aなら0x\notin Aならば1とすれば良い。

f(x,y)=ax+by+cと定めると、零点集合は直線になる。

f(x,y)=x^2+y^2-1と定めると、零点集合は単位円になる。

f(x,y)=g(x)-yと定めてやると、零点集合はy=g(x)となる

 このようにさまざまな集合を関数を用いて表現することができる。

 さて、この零点集合に変換という操作を行う。

変換
\phi:{\mathbb{R}}^n\mapsto{\mathbb{R}}^nが変換であるとは、\phiが全単射であることをいう

全単射は、一対一対応と言い換えてもらって構わない。

 一対一対応しているということは、変換を元に戻すようなある変換が存在するということである。この変換のことを逆変換といい、\phiにたいして、{\phi}^{-1}と書く。

 これだけではわかりにくいので変換の例を提示する。

変換の例

\phi:\mathbb{R}^2\mapsto\mathbb{R}^2\phi(x,y)=(3x,2y)と定義すると、これは変換になっている。

実際に変換になっていることを示す。全射かつ単射であることを示せばよい。

全射であるとは、行き先に漏れがないことを表すので、x,yをとってきたときに\phi(s,t)=(x,y)となるs,tが存在することを示せばよい。これはs=\dfrac{x}{3},t=\dfrac{y}{2}ととれば達成できる。

次に、単射であることを示す。単射は行き先にかぶりがないことを表すので、\phi(s,t)=\phi(u,v)だったときに(s,t)=(u,v)が成り立てばよい。\phi(s,t)=(3s,2t)であり\phi(u,v)=(3u,2v)であり、(3s,2t)=(3u,2v)であることから、(s,t)=(u,v)は容易に導ける▫

 この変換に対して像を定義する。

変換の像
A\subset{\mathbb{R}}^nの像を\phi(A)\stackrel{\mathrm{def}}{=}\{\phi (x)\hspace{1mm}\big|\hspace{1mm}x\in A\}と定義する

 さて、以上で定義された概念に対して次のような定理が成り立つ。

変換の原理
\phi (G_f)=G_{f\circ\phi^{-1}}

Proof

意外にも簡単な変形によって示せる。集合の等号を示すときの常套手段として、同値変形を複数行う。

x\in\phi (G_f)

\Longleftrightarrow x=\phi(y),f(y)=0

\Longleftrightarrow y={\phi}^{-1} (x),f(y)=0

\Longleftrightarrow f\circ{\phi}^{-1} (x)=0

\Longleftrightarrow x\in G_{f\circ\phi^{-1}}◽︎

 この事実は、y=f(x)x軸方向にaだけずらしたときに関数がy=f(x-a)となる事実の広範な一般化である。実際変換をx+aとおいて、f(x,y)=g(x)-yとおけば、そのことが容易に導ける。

 

 以上の二つの準備により、われわれはついに楕円を回転させる資格を得た。

 さて、横軸への長さa、縦軸への長さbの楕円は半径1の円を横にa倍、縦にb倍引き伸ばせばよかった。

 すなわち、x軸をa倍、y軸をb倍に引き伸ばすような変換\phi (x,y)=(ax,by)を考えればよかった。

 単位円はf(x,y)=x^2+y^2-1の零点集合と見做せたので、これに変換の原理を適用してやると、次のような式が得られる。

楕円の標準形
\bigg(\dfrac{x}{a}\bigg)^2+\bigg(\dfrac{y}{b}\bigg)^2=1

 この標準形で表される楕円を原点Oに関して\thetaだけ回転させたい。このとき、変換の原理より、-\thetaだけ内部の変数を回転させてやれば良いことがわかる。

 つまり、R_{-\theta}という変換を施してやれば良いことがわかる。変数を計算すると、\begin{pmatrix}\cos\theta & \sin\theta\\-\sin\theta & \cos\theta\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}=\begin{pmatrix}x\cos\theta+y\sin\theta\\-x\sin\theta+y\cos\theta\end{pmatrix}

を変数として取れば良いことが分かる。

 これによって、回転した楕円は次のような方程式を満たすことがわかる。

回転した楕円の方程式
\bigg(\dfrac{x\cos\theta+y\sin\theta}{a}\bigg)^2+\bigg(\dfrac{-x\sin\theta+y\cos\theta}{b}\bigg)^2=1

 パラメータをa=3,b=2として回転を可視化したのが以下の動画である。

 上の式をデスモスに入力することで自分で色々いじることができるので、ぜひやってみるといい。

コピーするなら下から。スライドは自分で設定してください。