授權聲明
本書最主要的內容來自 Unabridged Versionof Sean's Applied Math Book ,該書作者 Sean Mauch 慷慨的
釋出著作權 (No rights reserved),讓大家可以任意使用,以下是該書的網址:
http://www.its.caltech.edu/~sean/book/unabridged.html
另外、本書也從維基百科擷取了不少圖片與文字。
為了遵守維基百科的授權規定,本書採用創作共用的「姓名標示、相同方式分享」的授權,請使用者
於修改使用時務必遵守此授權規定。
陳鍾誠 2013/3/19 於 金門大學 資訊工程系
集合透過這些基本運算,集合可以形成的一個代數空間2,像是 R 就是一個實數加、減、乘、除運算的
代數空間(Algebraic Space),因為「實數 (+-*/) 實數」仍然會是一個實數,所以實數就形成了加減乘除
的代數空間。
對整數而言,加法、減法、乘法的結果都是整數,所以對這些運算而言整數是其代數空間,但是對於
除法而言,整數除以整數不見得還是整數,例如 3 / 2 就不是整數。因此,當我們討論除法的代數空間
時,就必須考慮將代數空間擴展到有理數的範圍,甚至是實數的範圍了。
對於集合而言,由於「集合與集合之間」的「聯集、交集、差集」結果仍然是集合,所以我們說「所
有的集合形成一個聯集、交集、差集的代數空間」。
對於代數空間中的運算,也就是代數運算(Algebraic Operation)而言,數學家們在意的是其代數特性,常
見的代數特性有「結合性、交換性」等,而代數空間中很重要的「單位元素」與「反元素」也是數學
家所在意的特性,以下我們就來看看集合的代數特性。
2 S 中任兩元素 a,b 經運算 X 後的結果可用 c = a X b 表示,如果這些運算結果 c 也都在 S 當中,則我們稱 S 為一個代數空
間。
0.2. 代數 (Algebra)
0.2.1. 代數空間 (Algebraic Space)
如前所述,對於一個集合 S (例如整數) 與某個運算 X (例如加法) 而言,如果兩個元素的運算結果 c =
a X b 也在集合當中,那麼 S 就可以形成一個代數空間。這種讓 a X b 全數落入集合 S 當中的特性,
稱為封閉性。如果對集合 S 運算 X 而言具有封閉性,那麼 S 才能說是一個代數空間。
0.2.2. 群 (Group)
當運算 X 在集合 S 中具有「封閉性 (Closure)、結合性 (Associativity)、單位元素 (Identity element)、
反元素 (Inverse element)」等四項特性時,我們稱 (S, X) 形成一個群 (Group)。
如果運算 X 還具有交換性,那我們稱 (S,X) 形成一個交換群。
0.2.3. 場 (Field)
在同一個代數空間 S 當中,(S, O) 形成一個群,而且 (S, X) 也形成一個群,而且運算 O 與 X 之間具
有分配性的時候,我們說 (S, O, X) 形成一個場 (field, 或稱為「場」)。
19.
讓我們將「場」以代數的數學形式寫出來,讀者應該能更清楚理解場的定義:
(S, O) 是一個群 (S, X)是一個群
封閉性
結合性 (a O b) O c = a O (b O c) (a X b) X c = a X (b X c)
單位元素 aOo=oOa=a iXa=aXi=a
反元素
分配性 a X (b O c) = (a X b) O (a X c)
不知道您是否已經注意到了,以上關於「場」的定義好像認識卻又很陌生,感學有點難懂,因為實在
太抽象了。
但是這種抽象性正是數學家所想要的,因為他們不希望一個數學只能綁在某個特定的實體上,因而將
那些法則抽出來形成代數結構。事實上這種 (S, O, X) 這種「場」代數結構有一個很常見的實例,那就
20.
是「實數空間中的加與乘」之代數 (R, *,+),讓我們將上述表格用 * 與 + 重寫一遍您就會覺得很熟悉
了。
(R, +) 是一個群 (R, *)是一個群
封閉性
結合性 (a + b) + c = a + (b + c) (a * b) * c = a * (b * c)
單位元素 a+0=0+a=a 1*a=a*1=a
反元素
分配性 a * (b + c) = (a * b) + (a * c)
在較為抽象的層次上探討各種運算的特性,然後歸納出哪些特性 (公理) 可以推導出哪些定理,正是代
數學的基本研究方向,而純粹研究這種代數特性的數學就稱為「抽象代數」。
2.2. 極限 (Limits)
2.2.1.函數的極限 (Limits of Function)
極限是整個微積分的重要核心概念,但這個慨念其實相當抽象,以致於很多古代的中外哲學家對極限
11 12 13 14
的思考型成了一些似是而非的「詭論」,而其中很多詭論還真的是相當有說服力的呢?
11 「一尺之捶、日取其半、萬世不竭」 – 莊子天下篇
12 「飛鳥之景,未嘗動也」– 惠施
13 芝諾悖論之「阿基里思與烏龜」 – 動得最慢的物體不會被動得最快的物體追上。由於追趕者首先應該達到被追者出發之
點,此時被追者已經往前走了一段距離。因此被追者總是在追趕者前面。 來源:—亞里士多德, 物理學 VI:9, 239b15
Zeno's paradoxes:Achilles and the tortoise – In a race, the quickest runner can never overtake the slowest, since the pursuer
must first reach the point whence the pursued started, so that the slower must always hold a lead.
14 芝諾問他的學生 「一支射出的箭是動的還是不動的?」
「那還用說,當然是動的。」
「確實是這樣,在每個人的眼裡它都是動的。可是,這支箭在每一個瞬間裡都有它的位置嗎?」
「有的,老師。」
「在這一瞬間裡,它佔據的空間和它的體積一樣嗎?」
「有確定的位置,又佔據著和自身體積一樣大小的空間。」
2.4.2. 可導 (可微分)
定義:(可微分)若 f(x) 在 x=c 點可微分,則 f 必須滿足下列條件。
定理:設函數 f 在 x 可微分,則 f 在 x 點上連續。
說明:在 y = f (x) 之圖形上,其中的點 (a, f (a)) 之切線為
(1)非垂直:過 ( a, f (a)) 且斜率為 f'(a) 之直線,若 f'(a) 存在;
(2)垂直:直線 x = a,且導數為無限大。
以下是維基百科中對於函數可導條件的描述。
7.7. Z 轉換– 拉氏轉換的離散快速版
在電腦的計算當中,由於浮點數的計算較慢,且 的計算並不方便,如果改用整數的方式,然後將
整個轉換的積分改為離散版本的加總,那麼就可以得到一個更快速且適合電腦計算的轉換方式,於是
270.
拉式轉換就變成了離散版的 Z 轉換。
Z轉換把離散時域的 x[n] 轉為 z 域 (z-domain) 的 X(z),其中 n 是整數,z 是複數變量,其表示方式
為 ,這個表示方式很明顯的用極座標表示出長度 r 與角度 。
連續函數 f(t) 拉氏轉換 收斂區域 離散函數 x[n] Z 轉換 X(z) 收斂區域
L(s)
1 all s 1 所有 z
s>0 |z| > 1
<textarea id="shell" cols="60"rows="10">
sin(x)
cos(x)
</textarea>
<script type="text/javascript">
var sin=Math.sin;
var cos=Math.cos;
var tan=Math.tan;
var cot=Math.cot;
var sec=Math.sec;
var csc=Math.csc;
var ceil=Math.ceil;
var exp=Math.exp;
var floor=Math.floor;
var log=Math.log;
var max=Math.max;
var min=Math.min;
var pow=Math.pow;
var p=Math.pow;
var random=Math.random;
var round=Math.round;
var abs=Math.abs;
var sqrt=Math.sqrt;
function cut(f, a, dx) {
var fa = f(a);
var fb = f(a+dx);
return function(x) { return fa + (fb-fa)/dx * (x-a); }
298.
}
function ExpCurve(from, to,step) {
this.from = from;
this.to = to;
this.step = step;
this.plotsList = [];
this.curve = function(code, ymin, ymax) {
var plots = [];
for (var x = this.from; x < this.to; x += this.step) {
var y = eval(code);
if (x > this.from && abs(y-ylast)/this.step > 1000.0) // 斜率太大,近乎垂直,中斷處不畫
plots.push(null);
plots.push([x, y]);
if (y < ymin-100 || y > ymax+100) // 超出範圍,超出點不畫
plots.push(null);
ylast = y;
}
return { label: code, data: plots };
}
this.curveList = function(codeList, ymin, ymax) {
var size=this.plotsList.length;
for (var i=0; i<codeList.length; i++) {
if (codeList[i].indexOf("=") >=0) {
eval(codeList[i]);
299.
this.plotsList[size+i] = {};
} else
this.plotsList[size+i] = this.curve(codeList[i], ymin, ymax);
}
return this.plotsList;
}
return this;
}
function drawCurveList(target, codeList, from, to, ymin, ymax, step) {
eval("fx = function(x) { return x; }");
var c = new ExpCurve(from, to, step);
$.plot($(target), c.curveList(codeList, ymin, ymax), {
yaxis: { min: ymin, max: ymax },
series: {
lines: { show: true },
points: { show: false },
bars: { show: false, barWidth: step },
}
});
return c;
}
function drawGraph() {
var from = eval($("#from").val());
var to = eval($("#to").val());
300.
var ymin =eval($("#ymin").val());
var ymax = eval($("#ymax").val());
var step = eval($("#step").val());
var codeList = $("#shell").val().split("n");
return drawCurveList("#placeholder", codeList, from, to, ymin, ymax, step);
}
function keyEnter(event) {
if (event.which == 13) {
// event.preventDefault();
drawGraph();
}
}
$(drawGraph);
$("#shell").keypress(keyEnter);
$("#from").keypress(keyEnter);
$("#to").keypress(keyEnter);
$("#step").keypress(keyEnter);
</script>
</body>
</html>