2020年 1月 の投稿一覧

代数的構造の関係を図示してみた(マグマ、半群、モノイド、群、アーベル群、環、可換環、整域、体)

代数構造まとめ

こんにちは、毛糸です。

本記事では、代数学において考察対象となる代数的構造について整理します。

群や環といった基本的な代数的構造が、それぞれどういう包含関係になっているのかを、図を用いてまとめます。

群・環・体、代数的構造の包含関係

群や環などの代数的構造は、包含関係をイメージしながら整理しておくと便利です。

たとえば

群の演算(加法)が可換であって、乗法についても閉じており、乗法の結合法則と加法乗法の分配法則が成り立つものが、環である。

というふうに、条件の緩い代数的構造(群)から始めて、条件を追加していくことでより複雑な構造(環)を得ることが出来ます。

この代数的構造の包含関係を図示したものが以下です。

代数構造まとめ

この図は、こちらのページ「群・環・体 (大人になってからの再学習 )」に掲載されている同様の図を参考にして、群よりも単純な代数的構造を明示し、表現を修正したものです。

なお、上の図では条件が追加されるごとに領域が大きくなっていますが、これは「集合の大きさ」を表してはいません。

条件が厳しくなれば、集合としては「狭まっていく」ので、イメージとしては以下のような感じです。

代数構造の包含関係

 

諸注意

代数的構造の包含関係図はあくまでイメージであり、正確でない表現を多分に含んでいます。

そもそも代数的構造は、ある集合と、その上の二項演算をセットで考えるものですが、上の包含関係図ではその「ある集合」とその元についての説明は省かれています。

つまり、上の包含関係図におけるマグマの説明

\(a \)と\(b \)が含まれるなら\( a+b\)も含まれる

は、

集合\( M\)の任意の元\( a\)と\( b\)について、二項演算\(+ \)が定義されていて、\( a+b\)が\( M\)の元であるとき、\( \left( M,+\right)\)をマグマと呼ぶ。

と述べるのが正確です(しかし前者の説明でも雰囲気はわかるでしょう、そのための図解です)。

また、たとえばマグマの条件を「加法について閉じている」と表現しており、二項演算を「\( +\)」で表していますが、一般にはマグマは二項演算について閉じていればよく、加法である必要はないですし(むしろ乗法と呼ぶほうが多いのかも)、二項演算を「\( +\)」で表す必然性もありません。

ただ、条件列挙の順序の観点から、群・環・体の包含関係のイメージを持つための「方便」として、あえて加法と言い「\( +\)」の記号を使っています。

その他の説明も、似たような理由から正確でない部分を含んでいますが、この図の趣旨は基本的な代数的構造の関係を直感的に捉えることですので、ご容赦ください。

正確な定義はテキストに載っていますから、そちらを参照していただくことにして、包含関係図はあくまで「直感的理解」のための使うのが良いでしょう。

代数学を理解するためのテキスト・参考書

群や環といった基本的な代数的構造を理解するためのテキストとしては、以下が入門的です。

解析学(微積分)が好きだけど、群や体の定義くらいは知っておきたい、という方は、解析学の名著「解析入門Ⅰ」の最初に、実数体を定義する際に基本的な概念が登場します。

代数学の基本的なところから始めて、最近注目を浴びている圏論も勉強したいという方は、こちらの本がまとまっています。

行列の基本、最初の一歩

こんにちは、毛糸です。

最近、有志を集めてデータサイエンスの実践的手法を学ぶ勉強会を開催しています。

その勉強会で教材にしているのが、『東京大学のデータサイエンティスト育成講座』です。


本書はプログラミング言語Pythonを用いて、データ分析の手法や応用について解説する、大変良いテキストです。

データ分析と数学

データ分析の手法を学ぶには、統計学をはじめとする数学の知識が必須です。

とくに、昨今話題のAI・機械学習・データアナリティクスといったトピックスを理解するには、高校数学以上のやや高度な数学が不可避になっています。

具体的には、微分積分学(解析学)や行列(線形代数学)についての大学初級レベルの知識がまず求められます。

しかし、かんたんな微積分はさておき、行列に関しては、高校時代に文系課程を修了した人や、若い世代の人は、高校数学の範囲内で勉強してこなかったため、

いざデータ分析の勉強をしてみようと思っても、テキストの最初からちんぷんかんぷん、ということが多々あります。

本記事ではこの「行列」に関する「最初の一歩」を踏み出すことを目的として、高校レベルの行列について基本的な事項をさらっと整理しておきます。

行列とはなにか、その定義とイメージ

私たちが数学でよく目にするのは、整数\( 1\)とか、変数\( x\)とか、関数\( f(x)\)だったりします。

これらの文字や数字は、今までは「単体で」目にすることが多かったでしょう。

しかし、これら文字や数字を

並べて、まとめる

ことで、計算が簡略化されたり、数式が見やすくなったりと、いろいろと嬉しいことが起こります。

本記事で解説する行列(行列、martixマトリックス)とは、「文字や数字を長方形に並べ、両側をカッコでくくったもの」のことです。

行列は次のように表します。

\begin{equation} \begin{split}  \left( \begin{array}{ccc} 1 & x & 5 \\ y & 0 & 7 \end{array} \right) \end{split} \end{equation}

このようにして作った行列の、ヨコ方向のまとまりを「行(row)」、タテ方向のまとまりを「列(column)」といいます。

上の行列において、行は2つあり、
\begin{equation} \begin{split} 第1行 = \left( \begin{array}{ccc} 1 & x & 5 \end{array} \right)\\ 第2行 = \left( \begin{array}{ccc} y & 0 & 7 \end{array} \right) \end{split} \end{equation}

です。

上の行列において、列は3つあり、
\begin{equation} \begin{split} 第1列= \left( \begin{array}{c} 1 \\ y \end{array} \right), 第2列= \left( \begin{array}{c} x\\ 0 \end{array} \right), 第3列= \left( \begin{array}{c} 5 \\ 7 \end{array} \right) \end{split} \end{equation}

です。

行列の大きさ・サイズは、行数と列数によって言い表すことが出来ます。

行数が\( m\)、列数が\( n\)の行列を「\( m\times n\)行列」といいます。

正方行列とはなにか

「文字や数字を長方形に並べ、両側をカッコでくくったもの」が行列ですから、長方形の特別な場合である正方形に並べることがあっても構いません。

正方形に並べるとき、行数と列数は一致しますので、「\( n\times n\)行列」が作れることになります。これを正方行列といいます。以下の行列\( A\)は\( 3\times 3\)行列です。

\begin{equation} \begin{split} A = \left( \begin{array}{ccc} 1 & x & 5 \\ y & 0 & 7\\ -2& 0.4 & z\\ \end{array} \right) \end{split} \end{equation}


行列の要素・成分

行列のなかに置かれている数字や文字は「成分」もしくは「要素」と呼ばれ、行数と列数を指定することで特定してあげることが出来ます。

上の行列\( A\)における\( y\)は、2行目・1列目の成分です。

行列の成分を文字を使って表すこともあり、たとえば行列\( A\)の\( i\)行目・\( j\)列目の成分を表すときに\( a_{ij}\)と表したりします。

上の行列\( A\)では
\begin{equation} \begin{split} a_{2,1}&=y\\ a_{3,2}&=0.4 \end{split} \end{equation}

です。

行列の足し算(加算)と引き算(減算)

数字が足し引きできたのと同様、行列も足し引きできます。

行列は「長方形に並べた要素」のことでした。

行列を足し引きしたければ、「要素ごとに足し引きする」のが自然でしょう。

\begin{equation} \begin{split} \left( \begin{array}{cc} a & b \\ c & d \end{array} \right)+ \left( \begin{array}{cc} p & q \\ r & s \end{array} \right)= \left( \begin{array}{cc} a+p & b+q \\ c+r & d+s \end{array} \right) \end{split} \end{equation}

\begin{equation} \begin{split} \left( \begin{array}{cc} a & b \\ c & d \end{array} \right)- \left( \begin{array}{cc} p & q \\ r & s \end{array} \right)= \left( \begin{array}{cc} a-p & b-q \\ c-r & d-s \end{array} \right) \end{split} \end{equation}


このように足し算引き算を考える上で大切なことは、足し引きする行列の行と列の数が一致している必要がある、ということです。

例えば\( 2\times 3\)行列と\( 2\times 4\)行列を足すことはできません。

行列の実数倍

行列を実数倍(定数倍)するときも、「要素ごとに掛け算する」というルールで計算できます。

\begin{equation} \begin{split} k\times \left( \begin{array}{cc} a & b \\ c & d \end{array} \right)= \left( \begin{array}{cc} ka & kb \\ kc & kd \end{array} \right) \end{split} \end{equation}



行列同士の掛け算(乗法)

行列に実数を掛けるのは簡単でしたが、では「行列と行列を掛ける」ことはできるのでしょうか。

実は、ここが行列を勉強するときの最初のつまづきポイントです。

最初は「要素ごとに掛け算したらいいのでは?」と思うでしょう。

つまり掛け算を(あえて\( \times\)と書かずに)\( \circ\)と書いて
\begin{equation} \begin{split} \left( \begin{array}{cc} a & b \\ c & d \end{array} \right)\circ \left( \begin{array}{cc} p & q \\ r & s \end{array} \right)= \left( \begin{array}{cc} ap & bq \\ cr & ds \end{array} \right) \end{split} \end{equation}


として掛け算するのが自然だ、と思いたくなります。

この掛け算をアダマール積とか要素積といいます。

しかし、この掛け算は「ベクトルの内積」と相性がよくありません(内積についてはこちらのサイトを参考にしてください)。

ベクトルの内積については別の機会に説明をしますが、ここでは「要素ごとの掛け算は、行列同士の掛け算としてはあまり適当でない」ということを押さえておいてください。

「要素のまとまり」を考える行列においては、実は以下のようなルールで、行列同士の掛け算を考えると都合がいいとされています(掛け算記号\( \times\)は省略して書くのが通常です)。
\begin{equation} \begin{split} \left( \begin{array}{cc} a & b \\ c & d \end{array} \right) \left( \begin{array}{cc} p & q \\ r & s \end{array} \right) = \left( \begin{array}{cc} ap+br & aq+bs \\ cp+dr & cq+ds \end{array} \right) \end{split} \end{equation}

この掛け算のルールを言葉で表現すると、「左の行列の各行と、右の行列の各列の内積を並べる」ということになります。

より詳しい内容は参考文献に書いてありますので、是非読んでみてください。

行列の掛け算は、右の行列の列数と、左の行列の行数が一致している必要があります。

つまり\( l\times \underline{m}\)行列と\(\underline{m}\times n \)行列のようなセットでないと、計算することが出来ません。

また、行列\( A\)と\( B\)の掛け算であっても、\( AB\)と\( BA\)は一致しないことがあります。つまり、行列\( A\)に、行列\( B\)を右から掛けるか、左から掛けるかによって、答えが変わるのです。

行列の掛け算のポイントをまとめるます。

  • 要素ごとの掛け算は、あまり適当でない
  • ちょっと複雑な計算によって、掛け算を定義する(右の行列の行と、左の行列の列の、内積をならべる)
  • 右の行列の列数と、左の行列の行数が一致している必要がある
  • 行列を右から掛けるのと左から掛けるのとで、答えが変わる


単位行列とはなにか

さて、すこし頭の体操です。

以下のような「\( 1\)を斜めに並べ、他の要素は\( 0\)」になるような正方行列\( E\)(ここでは\( 2\times 2\)行列)を考えてみましょう。
\begin{equation} \begin{split} E= \left( \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array} \right) \end{split} \end{equation}


このとき、\( 2\times 2\)の正方行列\( A\)について
\begin{equation} \begin{split} AE=EA=A \end{split} \end{equation}
が成り立ちます。実際に計算してみてください。

\( E\)は右から掛けても左から掛けても、掛けられる行列\( A\)がそのまま返ってきます。

「どんな実数も1を掛けると、掛けられた数がそのまま返ってくる」のと似ていますね。

この「\( 1\)を斜めに並べ、他の要素は\( 0\)」になるような正方行列\( E\)を単位行列といい、「行列の世界での\( 1\)のような役割」を果たします。

逆行列とはなにか

実数を考えたとき、かならずそれに逆数が存在することを、私たちは知っています。

実数\( a\)に「ある実数\( x\)」を掛けた答えが\( 1\)になるような実数のことを、\( a\)の逆数と言うのでした(この\( x\)はつまり\( \frac{ 1}{ a}=a^{-1}\)のことです)。

\( 2\)の逆数は\( \frac{ 1}{ 2}\)ですし、\( \sqrt{3}\)の逆数は\(\frac{1 }{ \sqrt{  3}}=\frac{\sqrt{ 3 }}{ 3} \)です。

行列にも逆数のようなものが存在します。

つまり、行列\( A\)に「ある行列\( X\)」を掛けた答えが単位行列\( E\)(行列の世界での\( 1\)の役割)になるような行列のことを、\( A\)の逆行列といい、\( A^{-1}\)と表します。

数式で表すと

\begin{equation} \begin{split} AX=XA=E \end{split} \end{equation}
となるような行列\(X \)が、\(A \)の逆行列です。
\begin{equation} \begin{split} AA^{-1}=A^{-1}A=E \end{split} \end{equation}
と書いても同じことです。

逆行列なんてどこで使うんだ、と思われる方もいるでしょう。

私たちが方程式\( ax=1\)を解くときに、\( a\)の逆数\(\frac{ 1}{ a} \)が登場して\( x=\frac{ 1}{a }\)と解くことができたように、

行列を使って方程式を解くときなどに、逆行列は大活躍します。

行列\( A\)の逆行列\( A^{-1}\)の求め方や、逆行列を使った方程式の解き方は、参考文献のテキストに説明されています。

参考文献

本記事の参考にした『もう一度高校数学』は、高校1年生の数学から初めて、微積分や行列など、AIやデータ分析を理解するために必須の数学をイチから学び直せる良書です。

とくに、2012年の指導要領改訂で高校数学から消えてしまった

数学C 行列

が解説されている点がおすすめできます。

文系社会人がデータ分析やAIの技術を学ぼうとしたとき、行列についての予備知識が皆無なので、テキストの最初から意味がわからない、ということが多々ありますが、

この本で(旧課程の)高校レベルの知識を身につけておけば、データ分析のテキストの理解もスムーズに進むでしょう。

もう一度高校数学』はテキストの構成が、高校の教科書のように無味乾燥ではないのでとっつきやすいです。



Warning: Trying to access array offset on value of type bool in /home/r1406503/public_html/keito.luxe/wp-content/themes/xeory_base/lib/functions/bzb-functions.php on line 299

Warning: Trying to access array offset on value of type bool in /home/r1406503/public_html/keito.luxe/wp-content/themes/xeory_base/lib/functions/bzb-functions.php on line 301
class="col-md-4" role="complementary" itemscope="itemscope" itemtype="http://schema.org/WPSideBar">