代數
在《資訊工程系》當中,我們通常必修《線性代數》,但是在很長的一段時間裏,我其實搞不清楚到底甚麼是《代數》。
狹義來說,代數學起源於《算術》,是研究《加減乘除》運算的一門學問:
廣義來說、可以參考維基百科英文版對代數的解釋:
In its most general form, algebra is the study of mathematical symbols and the rules for manipulating these symbols
我認為這個《廣義解釋》比較清楚的描繪了代數的範圍,根據這個解釋,代數學是研究數學符號、以及操作這些符號之規則的學問。
數學的領域很大,但是大致第一層可以約略區分為《代數、幾何、分析、統計》等等領域。
在數學分支中,代數學應該是和電腦之間關係最密切的一門學問了,因為電腦基本上也是操弄數字以完成工作的一項工具。
而幾何大概是和《電腦距離最遠》的一項數學,因為像《圓形、直線、曲線》等等圖形的表達,通常是電腦不太擅長的工作。因此幾何證明對電腦而言,有點格格不入的感覺,雖然電腦其實也可以用來做幾何證明的!
算術
從小學一年級開始,我們就學習《加減乘除》等概念,一直到四年級以之前,都是以《算術》為數學的主軸。
《算術》大概可以說是最實用的數學了,這是一門你到菜市場買菜都可以用得到的數學,而且每天都會用到!
我們可以用電腦輕易地進行一些算術的動作,例如用 node.js+javascript 進行下列操作:
D:\Dropbox\gitbook\rlab\code\algebra>node
> 3+5
8
> 7*4
28
> 25*8
200
> 200/5
40
> ((3-5)+20/4)*3
9
以上的算術看來簡單,但是數學從古代演化到今天,算術其實經歷過長期不斷地改良與演進。
在古代數學史上,兩河流域的巴比倫在從公元前3000年開始就發展出了獨特的數學體系,採用六十進位制,詳情請參考 《維基百科:巴比倫數學》。
我們現在所用的阿拉伯數字,其實是印度的婆羅米人發明的,這種很容易撰寫的十進制數字,對數學的發展幫助很大,這是現代人很難想像的。
我們現在所使用的阿拉伯數字 0123456789,屬於歐洲式的寫法,標準的阿拉伯寫法是 ٠١٢٣٤٥٦٧٨٩,更詳細的內容請參考 《維基百科:印度-阿拉伯數字系統》。
阿拉伯數字採取位值法,高位在左,低位在右,從左往右書寫。藉助一些簡單的數學符號(小數點、負號等),這個系統可以明確的表示所有的有理數。
初等代數
等到小學生已經學會《加減乘除》這些算術了,我們的數學教育開始慢慢導入《變數》的觀念。
但是變數的概念並不容易,不只我覺得如此,康熙學代數時也發生過類似的現象,當時《傅聖澤》為了教康熙 ,於是寫下:
(甲+乙)(甲+乙)= 甲甲+二甲乙+乙乙
康熙看了很頭大,於是寫下了:
諭王道化:朕自起身起身以來,每日同阿哥等察【阿而熱巴拉新法】,最難明白,他說比舊法易,看來比舊法愈難,錯處易甚多,騖突處也不少 ...... 還有言者:甲乘甲、乙乘乙,總無數目,即乘出來亦不知多少,看起來想是此人算法平平耳。(參考【掌故叢編】二輯【清聖組諭旨二】)
詳情請參考:《康熙皇帝與符號代數》 一文!
但是康熙皇帝的數學造詣其實蠻高的,這點可以參考 《康熙皇帝的數學事業》 一文,康熙重用《南懷仁》並向他學習數學,南懷仁為了交康熙數學,還找了一堆人來翻譯《幾何原本》。康熙也向比利時的神父《安多》學習了《數學概要》這本書。
連《萊布尼茨》都從《白晉》的信中得知康熙精通數學,結果送了一台二進位計算器給康熙。
這樣一個對數學很厲害的皇帝,卻也被《變數的概念所難倒了》,可見代數對古人來講,並不簡單!
言歸正傳,當我們學會變數的概念之後,老師就會引入《方程式求解》的問題,像是《國中一年級》的《一元一次方程式、二元一次方程式》求解問題等等,像是以下範例:
多元一次方程組的求法,會衍生出《線性代數》這門以《矩陣》為核心的數學,這對電腦非常的有用,像是 matlab 這樣的科學計算軟體,就是 matrix laboratory 的簡稱,其設計完全是以《矩陣運算》為核心而建構出來的,我們將在後續的章節專門探討此一主題。
中學時學校會進一步教《一元二次方程式》的求解方法與公式,其公式如下:
的公式解為
有了這樣的公式,我們可以很輕易地寫出一個程式,求解一元二次多項式的根。
檔案: root2.js
function root2(a,b,c) {
var t = b*b-4*a*c
if (t < 0) throw Error('沒有實根');
var t2 = Math.sqrt(t);
return [(-b+t2)/(2*a), (-b-t2)/(2*a)];
}
console.log("root of 1x^2+4x+0=", root2(1,4,0));
執行結果:
D:\Dropbox\gitbook\rlab\code\algebra>node root2
root of 1x^2+4x+0= [ 0, -4 ]
古巴比倫留下的陶片顯示,在大約公元前2000年(2000 BC)古巴比倫的數學家就能解一元二次方程了。巴比倫人並非求出通用的公式,而是針對某些特定的問題求解,詳情請參考 《維基百科:巴比倫數學》。
後來、公元前300年左右古希臘的 歐幾里得 、公元200年左右亞歷山大城的 丟番圖 ,公元七世紀波斯的 花拉子米 等人也都研究過求且方程式的問題。
《丟番圖》是第一個將符號引入代數的數學家,並且提出了《丟番圖方程》和《丟番圖問題》,因此被稱為《代數學之父》。
在 丟番圖的墓誌銘 上寫著:
丟番圖的一生,六分之一是幼年時期,青少年時期占了十二分之一,又過了七分之一才結婚。5年後有了兒子,不過兒子比他早 4 年逝世,兒子一生歲月只有的一半
連人死了都還要出題給人猜,真的是個可怕的數學家阿!
歷史講到這裡,讓我們言歸正傳,回到《求根公式》上,一元二次方程式的求根公式並不難,只要代入公式立刻可以求得根式解答,於是早期的數學家當然會想,那《三次、四次、五次、六次、....》多項式有沒有求解公式呢?
但是這個問題並不容易回答,三次方程公式解 與 四次方程公式解 的問題直到1520年時才由 塔爾塔利亞 與 卡爾達諾 等人發現,其解法如下:
三次方程式的公式解
一元三次方程式: 公式解的求法,令 ,如此可將上式改寫為
其中的 p, q 定義如下:
,
然後可以用 作為是否有實根的判別式, 時三個根都是實根。
得到的解公式如下:
其中的 ,
四次方程式的公式解
一元四次方程式: 公式解的求法,令 ,如此可將上式改寫為
其中的 p, q, r 定義如下:
詳細解法請參考 維基百科:四次方程。
代數基本定理
通常在中學裏老師會告訴我們 《代數基本定理》 的內容,但是不會給出證明。
代數基本定理:方程式 至少有一個複數根。
當我們知道至少有一個根之後,就可以用《遞迴方式》的《數學歸納法》證明該方程式 恰好有 n 個複數根。
換句話說: 是成立的,也就是 n 次多項式可以完全被分解。
高斯一生總共對《代數基本定理》給出了四個證明,其中第一個是在他22歲時(1799年)的博士論文中給出的。高斯給出的證明既有幾何的,也有函數的,還有積分的方法。高斯關於這一命題的證明方法是去證明其根的存在性,開創了關於研究存在性命題的新途徑。
不過、代數基本定理只告訴我們複數根是存在的,但是並沒有說《存在固定的公式可以計算出這些複數根》。
既然代數基本定理告訴我們 n 次多項式可以分解成 n 個一次式的乘積,也就是 那麼我們就可以得出以下的《韋達定理》。
韋達定理
韋達定理:
其中: ...
代數數與超越數
根據上述的《代數基本定理》,n 次多項式有 n 個根 (含重根),那麼、是否有《某些數》不屬於任何《有理係數多項式》的根呢?
更精確地說,假如在上述方程式中,所有係數 均為有理數,也就是 ,那麼請問是否有某些數不是任何《有理係數多項式》的根呢?
這個問題的答案是肯定的,因為像是 等數,就不適任何《有理係數多項式》的根,這種數稱為《超越數》(Transcendental Number)。
而那些不是超越數的數,也就是那些是《有理係數多項式》的根的數,就稱為《代數數》(Algebraic Number)。
五次方程式的公式解
如上所述,《二次多項式》的公式解如下為 ,《三次多項式》和《四次多項式》也有公式解,雖然解的形式越變越複雜,但是我們有辦法一直往上,寫出五次,六次,七次一直到 n 次多項式的公式解嗎?
很可惜的,這件事情已經有人證明是做不到的了,證明的人是 阿貝爾 和 伽羅瓦,他們分別利用群論的方式,證明了而五次以上的多項式沒有公式解,詳情請看下列連結: