グレブナー基底にはポン酢が合う。

グレブナー基底大好きbotの公式ブログ!

女子高生がグレブナー基底に興味を持ち始めたのだが。第1話

Twitter でよく話題になるグレブナー基底

でも名前だけしか知らない、そんな人も多いのでは?

この記事では、人気数学小説「妹がグレブナー基底に興味を持ち始めたのだが。」の作者グレブナー基底大好きbot が、現役高校生と一緒にグレブナー基底を勉強していく様子を書いていきます。

「妹がグレブナー基底に興味を持ち始めたのだが。」

kakuyomu.jp

主人公の兄が妹(高校生)にグレブナー基底を教えていく青春数学小説

小説はプロットを用意して書いているので、ある意味予定調和ですが、この記事はリアルタイムで起こったことを元に小説形式に直していくので、何が起こるか分かりません。話が脱線して明後日の方向に進んでしまうこともあるかもしれません。

そんなライブ感のある「ドキュメンタリー数学小説」をお楽しみください。

登場人物

f:id:groebner_basis:20190424132417j:plain:w100
グレブナー基底大好きbot
自称数学botグレブナー基底を研究する傍ら数学小説を書いてる。好きな食べ物はポン酢。趣味は漫画を読むこと。

f:id:groebner_basis:20190424133110j:plain:w100
れいか

都内の高校1年生。好きな食べ物はチョコレート。趣味はTwitterやインスタなどのSNS。数学好きなバレー部。グレブナー基底はまったく知らない。

第1話「グレブナー基底って、知ってる?」


――未知との出会いは人をワクワクさせる。

都内のある駅前。

僕(グレブナー基底大好きbot)は、ここである高校生と待ち合わせをしていた。

その子の名はれいかさん。都内の高校に通っていて、この春1年生になったばかりだ。

僕はスマホのメッセージを見ながら待っていると、れいかさんが現れた。

僕たちは近くのスタバへと向かう。夕方4時ごろの店内は少し混雑していた。

マンゴーパッション ティーフラペチーノ、クランチーアーモンドチョコレートフラペチーノ、ダークモカチップフラペチーノ……

僕は呪文のようなドリンクメニューに少し戸惑ったが、れいかさんにオススメされ、ダークモカチップフラペチーノを注文した。

れいかさんは、期間限定のストロベリーベリーマッチなんとかを飲みたかったようだが、あいにく売り切れで、僕と同じダークモカチップフラペチーノに頼んでいた。

僕たちは2人用の席を見つけ、そこに座ることにした。

f:id:groebner_basis:20190424155244j:plain

僕は、ダークモカチップフラペチーノを1口飲んでから、本題へと入った。

僕「じゃあ、今日はあのーグレブナー基底についてお話ししたいなって思っています」

れいか「はい」

僕「まずなんかグレブナー基底って名前はたぶん聞いたことがあるっていう感じですか?」

れいか「はい笑(書店に)本とかがたくさん置いてあるので」

僕「たぶん Twitter とかでも名前を知ってる?感じだと思うんですけど……」

れいか「はい」

若干緊張していることもあり、僕は少しオタク特有の早口になってしまう。

落ち着きを取り戻すためにノートにグレブナー基底と書いた。

f:id:groebner_basis:20190424155119j:plain

僕「えーまあ、名前からちょっと見てくと、グレブナー基底は、グレブナーと基底の2つに分かれてて、」

れいか「あ、はい」

僕「グレブナーが人名で」

れいか「はい」

僕「これはグレブナー基底がブッフバーガー先生という人に発見されてて、ブッフバーガー先生の師匠がグレブナー先生なので、敬意を込めてグレブナーと付けられた感じで……」

れいか「(グレbotの)インスタに載ってました笑」

僕「はは。じゃあ、逆に基底って何か聞いたことはありますか?」

れいか「ちょっとだけあの……あの何でしたっけ、『計算で身につくトポロジー』に載ってます!」

僕「おー基底ってどんな感じでした?イメージとしては?」

れいか「あー分からないです。E?」

僕「E?」

れいか「うーん、分かってないです!笑」

れいかさんはそう言って苦笑する。

彼女はまだ高校生だが、数学が好きな面があり、高校範囲外の数学をよく自分で勉強している。

僕「(基底は)線型代数とかでも出てくる出てくるやつなんですけど、若干そこだと意味が異なっていて。まあ、別の言い方だとここでは『生成系』と一緒です。ある多項式の集まりを作るような有限個の多項式のことを基底と言って、たくさんあるんですけどそれについて今日はやってこうかという風に思います」

れいか「はい」

フラペチーノの効能もあってか、僕は次第に落ち着いて話せるようになってきた。

僕は持っていたボールペンをれいかさんに渡す。

僕「では、まずグレブナー基底の導入として多項式が必要なので、多項式ってどういうものなのか、多項式の具体例とかを書いてもらいたいです」

れいか「はい、じゃあ……」

れいかさんは


x-y+5

とノートに書いた。

僕「おおーそうですね。x-y+5xy の2変数の多項式になってますね」

れいか「はい」

僕「じゃあ、他の多項式の例とかありますか?」

れいかさんは続いてノートに、


ax ^2+bx+c

と書いた。

僕「ax ^2+bx+c は x に関する2次の多項式で、おそらく a,b,c は定数……?」

れいか「はい定数です」

多項式についてはバッチリなようなので、続いての話へ進む。

僕「これから考えることは多項式を複数組み合わせたものを考えていきたいと思います」

れいか「はい」

僕「例えば、複数の多項式が出てくる例とすれば連立方程式があります」

僕はノートに1つの連立方程式を書いた。

{
\begin{eqnarray}
  \begin{cases}
    x + 2y = 1  \\
    2x + y = -1
  \end{cases}
\end{eqnarray}
}

僕「この連立方程式の右側を左側へ移項すると、」

{
\begin{eqnarray}
  \begin{cases}
    x + 2y - 1=0  \\
    2x + y  +1=0
  \end{cases}
\end{eqnarray}
}

れいか「-11?」

僕「そう、こういう(多項式)=0という形になって、でも連立方程式としては同じにものになっています」

れいか「はい」

僕「こういう(多項式)=0がという方程式がいくつか集まった連立方程式のことを連立代数方程式と言います」

れいか「ほほー」

僕「グレブナー基底を使うと、こういう形の連立方程式を解くことができる。一般にどんな連立代数方程式でも解くことができることが知られています*1

れいか「おおー」

僕「それで、試しにこれを解いてもらいたいなって思います」

{
\begin{eqnarray}
  \begin{cases}
    x + 2y - 1=0  \\
    2x + y  +1=0
  \end{cases}
\end{eqnarray}
}

れいか「あー、はい。どんな解き方でもいいですか?」

僕「どんな解き方でもOKです」

れいか「えっと、ちゃんと記述とかしなくていいですか?あのー途中式書くのが苦手なので……」

僕「全然解けたらもうOKです」

れいかさんは、スラスラとペンを動かして、連立方程式を解く。

f:id:groebner_basis:20190424173540p:plain

れいか「えー、こうして、代入してこうなるから、答えは  x=-1, y=1 ?」

僕「えーと、(元の連立方程式に)代入して検算して見ると、」


x+2y-1=0\rightarrow -1+2\times 1-1=0


2x+y+1=0\rightarrow 2\times (-1)+1+1=0

僕「だから確かに合ってますね。たぶん何をしたかというと……」

れいか「えっと、まず、2つの式を足して、」

{
\begin{eqnarray}
  \begin{cases}
    x + 2y - 1=0  \\
    2x + y  +1=0
  \end{cases}
\end{eqnarray} \rightarrow 3x+3y=0
}

れいか「3x+3y=0を作って、3 で割って、x+y=0 という式を作って、それを  x + 2y - 1=0 という式から引いて、」


(x+2y-1)-(x-y)=0 \\ \rightarrow y-1=0  \\ \rightarrow y=1

れいか「y=1を得ました。それをx + 2y - 1=0に代入して、」


x + 2y - 1 \\ \rightarrow x+2-1=0 \\ \rightarrow x=-1

れいか「x=-1 が出ました」

僕「つまり、やったこととすれば、x という変数を消去して、 y だけの式を作ったということになってます」

れいか「はい」

僕「実はこれと同じことをグレブナー基底を使うとできます」

れいか「おおーー」

僕「グレブナー基底を使うと今言った変数消去をすることができます。このアイデアは、今やった1次式の連立方程式じゃなくても、もっと次数が高くても、 x ^2 とかが出てきても同じように解くことができます」

れいか「ほほう」

僕「ちなみに、今やった」

{
\begin{eqnarray}
  \begin{cases}
    x + 2y - 1=0  \\
    2x + y  +1=0
  \end{cases}
\end{eqnarray}
}

僕「は、なんて呼ばれる連立方程式か知ってますか?」

れいか「連立…1次方程式?」

僕「そうですね。中学とかだと、連立1次方程式とか連立2元1次方程式とか呼ばれたりしますね」

れいか「そんな名前でした」

僕「大学だと、線型方程式や連立線型方程式と呼ばれます。線型というのは次数が1次以下のものしかでこないことなんですが、この連立線型方程式の別の解き方としては、大学1年では行列を使った方法をやります」

れいか「あ〜行列」

僕「ガウスの消去法という方法が出てくるんですけど、やってることはさっき、れいかさんがやった変数の消去をもっとシステマチックに解くという感じですね。本質的にはやってることは同じですね」

f:id:groebner_basis:20190424180327j:plain

僕「でも問題としては、線型だと変数が消しやすかったんですが、」

れいか「はい」

僕「一般には次数が高いと変数が消去しにくい場合があります」

れいか「うーん」

僕「例えば、もっと複雑な」

{
\begin{eqnarray}
  \begin{cases}
    x ^2+ xy - y ^2=0  \\
    xyz + yz=0 \\
    zx+1=0
  \end{cases}
\end{eqnarray}
}

僕「のような連立方程式だと嫌になっちゃいますよね」

れいか「嫌ですね」

僕「でもグレブナー基底を使うとこういう連立方程式でも解くことができます」

僕は、ノートをめくり次のページを開いた。

何も書かれていない真っ白なページがそこに広がる。

これからこの空白にはどんな数式が埋まっていくだろう。未知との出会いが、今始まる。

僕「グレブナー基底を使って具体的な連立方程式を解いていきましょう」

――第2話へ続く。

今日のまとめ

*1:厳密には複素数の範囲で解が有限個の連立代数方程式に対し、1変数の方程式が作れるという意味で解けるということです

数学がよく分からない人のためのグレブナー基底

最近、ツイッターで話題の「グレブナー基底

あなたも一度は目にしたことがあるのではありませんか?

そして、あなたは次のような感情を持ったかもしれません。

  • ググってみたけどよく分からなかった……
  • Wikipedia 見たけど難しくて読めなかった……
  • グレブナー基底って一体なんなの……
  • もうメロンパン食べたい……

そんなあなたの要望に応えて、今回は難しい言葉を使わずに、「グレブナー基底」について説明するぶなよっ!!

普段数学に親しんでいない人にも、中学高校くらいの数学の知識で読めるように解説するぶなっ!!

ぶな汁ぶしゃああああああああああああああ!!!!!!!!!!

(注:このブログの執筆者は、語尾に「ぶな」をつけないと文章が書けない症状にかかっています。後、メロンパンは各個人で買ってください。)



さて、突然ぶなが、次のような連立方程式を考えるぶな。

{
\begin{eqnarray}
  \begin{cases}
    2x + 4y = 10  \\\
    x + 3y = 6 
  \end{cases}
\end{eqnarray}
}


とても美味しそうな連立方程式ぶなね。火で炙って醤油で食べてもイケると思いますぶな。

でも読者の中には連立方程式を食べない方もいらっしゃると思うので、まずは普通に解いてみたいと思いますぶな。

連立方程式を解く」とは、上の2つの方程式を満たす、x,yの値を見つけることぶな。

例えば、最初の式  2x + 4y = 10 から、2つ目の式 x + 3y = 6 の2倍を引くと、

{
\begin{eqnarray}
    2x + 4y &= 10  \\\
    ) \underline{2x + 6y = 12}\hspace{-22pt} &\\\
    \hspace{1pt} -2y&=-2
\end{eqnarray}
}

という感じに、 -2y = -2 という式が出てきたぶなね。よって、この両辺を -2 で割れば、

{
y=1
}

という y の値が得られたぶな。これを元の式の 2x + 4y = 10に代入すれば、

{
2x+4=10
}

で、両辺から4を引けば、2x=6 。つまり、両辺を 2 で割れば、

{
x=3
}

というx の値が得られたぶな!!!まとめると、元の連立方程式

{
\begin{eqnarray}
  \begin{cases}
    2x + 4y = 10  \\\
    x + 3y = 6 
  \end{cases}
\end{eqnarray}
}

の解は、

{
x=3,y=1
}

であることがわかったぶな!!

やったぶなあああああああああああああ!!!!!!!!!!!!


おそらく、読者の皆さんは、このような感じで、中学校や高校などで連立方程式を解いたことがあるのではないぶなでしょうか?

しかし、人によっては「連立方程式を解くのが面倒くさい」という人もいるのではないぶなでしょうか?

そこで、活躍するのが、「グレブナー基底」ですぶなっ!

グレブナー基底を使うと、連立方程式を「自動的」に解くことができますぶなっ!!

その方法としては、まず、連立方程式

{
\begin{eqnarray}
  \begin{cases}
    2x + 4y = 10  \\\
    x + 3y = 6 
  \end{cases}
\end{eqnarray}
}

から、多項式

{
\begin{eqnarray}
  \begin{cases}
    2x + 4y - 10  \\\
    x + 3y - 6 
  \end{cases}
\end{eqnarray}
}

を取り出しますぶな。これは、右辺の数字を左側に移行して、=0 の形にしたものぶな。

そして、次にこの2つの多項式に対応するグレブナー基底を計算しますぶな。

グレブナー基底は、WolframAlpha などで、GroebnerBasis コマンドを使えば、無料で計算できますぶな。例えば、

GroebnerBasis[{2x + 4y - 10, x + 3y - 6},{x,y}]

と入力して実行すると、

{
\{y-1,x-3\}
}

が表示されますぶな。コレ

この2つの多項式 y-1,x-3 にそれぞれ=0をつけてみると、y-1=0,x-3=0 になりますぶな。

そして、数字を右辺に移行してみれば、なんていうことでしょう!!!

{
x=3,y=1
}

確かに、さっき求めた連立方程式の解になってるではありませんか!!!


ということで、グレブナー基底を使うと、このように連立方程式を解くことができるぶな。

え?本当に?たまたまじゃないの?という人は、さっきの多項式の数字を変えて、色々試してみると、確かにそうだと実感できると思いますぶな。

つまりは、グレブナー基底は、あなたの生活に、次のように役に立ちますぶな。

  • スーパーで、無性に連立方程式が計算したくなった時
  • 八百屋で、2個と4個で1000円、1個と3個で600円の、りんごとみかんが売られてた時
  • 大事なデートの前に連立方程式が計算したくなった時
  • 八百屋で立ち往生しているたかしくんを助けたい時


最後に、なぜグレブナー基底連立方程式が解けるのか、簡単に説明したいと思いますぶな。

グレブナー基底とは、簡単に言えば、「多項式の集まりを、よりシンプルなものに変換したもの」ですぶな。

今回のケースで言えば、元の連立方程式

{
\begin{eqnarray}
  \begin{cases}
    2x + 4y = 10  \\\
    x + 3y = 6 
  \end{cases}
\end{eqnarray}
}

を、シンプルなものに変換すると、

{
\begin{eqnarray}
  \begin{cases}
    x=3 \\\
    y=1 
  \end{cases}
\end{eqnarray}
}

というよりダイレクトなものが出てきたという感じですぶな。そして、実は、もっと変数が多い場合、x,yの肩に指数がついたものでも、グレブナー基底で解くことができますぶな。

例えば、


{
\begin{eqnarray}
  \begin{cases}
   x+y+z &= 6  \\\
    x^2+y^2+z^2 &= 38\\\
    x^3+y^3+z^3&=144 
  \end{cases}
\end{eqnarray}
}

という3変数3次の連立方程式も一瞬で解くことができますぶな。
Wolfram|Alpha: Computational Knowledge Engine

グレブナー基底、すごいぶなねっ!!!!!!


というわけで、今回は、この辺で終わりにしたいと思いますぶな。

いかがでしたでしょうか?

グレブナー基底は、厳密な話をすると、もう少し難しいぶな。

でも、今回の説明で、ちょっとでも雰囲気がつかめたら、幸いですぶな。

ここまで読んでいただきありがとうございましたぶな。

また、この辺の説明は、カクヨムで連載中の小説、「最近、妹がグレブナー基底に興味を持ち始めたのだが。」の第1章にも載っていますぶな。

こちらももしよろしければ、お読みくださいぶな。

グレブナー基底大好きbot

ブログを始めたぶなっ!!

みなさんこんにちわぶなっ!

グレブナー基底大好きbotぶなよっ!

 

ツイッターグレブナー基底についてつぶやいているグレbot (@groebner_basis)がついに、ブログを始めたぶなっ!

 

グレブナー基底について、分かりやすく解説していく予定ぶなっ!!

 

グレブナー基底大好きbot