有一堆方程式,要去求解,是數學上很重要的事情。這應用當然很多很多,不過今天我們先不談,大家先假裝知道很重要就是了。
如果我們有一組線性方程式,我們有一個有系統的方法去求解,那就是我們在線性代數學的高斯消去法。
高斯消去法很好用。我們不但可以求解,也知道什麼時候沒有解,什麼時候有唯一解等等。
好,那我們進步一點,那些方程式不一定要線性的。比方說,一組多項式要求解。聽來是不是挺初級的問題?一般來說,數學上我們聽得懂的問題,大概都在幾百年前被解決了。不過呢,這個問題居然到了1965年左右,才由Buchberger發明了Groebner Basis去解決這個問題。所以,大概的說來,我們可以說:
我們一樣會有個有系統的方法,一樣可以求出是不是有解等等。這當然是非常有用的。而且呢,平常我們在數學研究所,剛開始學的還是了不起十九世紀的東西。然後幾年後才慢慢慢慢的走向近代。所以呢,通常1965年代的數學理論,都是挺深的,恐怕博士班的也不一定完全瞭解。
但是呢,Groebner基底其實是很容易的概念。它基本上就用一般化的高斯消去法!這麼容易的東西,居然要到1965年才被想出來,也是挺奇特的(當然,熟知代數幾何和Groebner基底的人,可能會知道大概的原因)。我強烈的相信,Groebner基底應該要放在大學部的數學當中。和微積分,線性代數一樣,都是每一位數學系和其他科系準備使用數學的基本技巧。
這是我想要寫這篇文章的主要原因。
其實談Groebner基底,不一定要說太多代數幾何的東西。不過呢,這裡為了要讓大家知道,Groebner其實有很多深厚的意義,也許會讓更多人有興趣,所以簡單的說明一下。
很多人聽說代數幾何很難。其實代數幾何主要要討論的就是代數簇(Algebraic Variety)。這代數簇難的地方是難在名字。其實一個代數簇沒什麼了不起,簡言之就是一組多項式共同的零解(有沒有看到「多項式」?所以和Groebner基底就有關了)。比方說我們考慮一個體,啊,不用昏倒,就來個複數C好了(還是不喜歡R也可以,不過C其實比較容易)。我們有個白痴的多項式
f(x)=x
這個白痴多項式的解集合就是 {0}!也就是這個多項式定義的一個代數簇。
沒什麼了不起吧?當然,聰明的你也知道,如果多項式多起來,要找解集合也就給它難一點了。不過呢,要找解集合也就是我們討論Groebner基的底的因嘛。我們再細說分明之前呢,我先來解釋一些名詞。這些只是為了方便說明。
是所有在複數上,有X_1, X_2, ..., X_n這n個變數多項式的集合。所有的多項式,包括那些騙人的常數啦,零啦都算。
n度的複數空間。沒什麼了不起,就是所有這種(c_1, c_2, ..., c_n)這種串列的集合。c_1, c_2, ..., c_n當然都是在C裡面。
其實很多人開始注意Groebner基底這種相當簡單,卻又重要的概念。有些代數課本已經放進了Groebner基底。我也不時看到台灣有人在討論這個問題。再加上,我這篇還沒寫好的文章,居然在Google很容易被找到... 我的文章容易被找到這個事實,也讓我深深感覺到,文章寫到一半就放在網站上,是不道德的... 好在,我找到一些包括中文的資訊,可以方便有興趣的朋友參考:
首先,是台北市立師院的李源順教授刊在《數學傳播》的文章,「淺談多元多次方程」。這篇文章正是討論Groebner基底的。你可以到數學傳播的網站上免費下載這篇文章。
http://www.math.sinica.edu.tw/math_media/vol.phtml?voln=271
再來是我認為相當簡單賅要介紹Groebner Basis和基本性質的英文網站:
http://www.geocities.com/CapeCanaveral/Hall/3131/g_bases.html
同時有線上Java程式,可以用來算算Groebner基底。