函數
參看函數 (消歧義)。
模板參量錯誤!(代碼36)
|
在數學領域,函數是一種關係,這種關係使一個集合里的每一個元素對應到另一個(可能相同的)集合里的唯一元素。函數的概念對於數學和數量學的每一個分支來說都是最基礎的。
術語函數,映射,對應,變換通常都是同一個意思。
概述
簡而言之,函數是將唯一的輸出值賦予每一輸入的「法則」。這一「法則」可以用函數表達式、數學關係,或者一個將輸入值與輸出值對應列出的簡單表格來表示。函數最重要的性質是其決定性,即同一輸入總是對應同一輸出(注意,反之未必成立)。從這種視角,可以將函數看作「機器」或者「黑盒」,它將有效的輸入值變換為唯一的輸出值。通常將輸入值稱作函數的參量,將輸出值稱作函數的值。
- 最常見的函數的參量和函數值都是數,其對應關係用函數式表示,函數值可以通過直接將參量值代入函數式得到。如下例,
- ,x 的平方即是函數值。
- 也可以將函數很簡單的推廣到與多個參量相關的情況。例如:
- 有兩個參量x和y,以乘積xy為值。與前面不同,這一「法則」與兩個輸入相關。其實,可以將這兩個輸入看作一個有序對(x, y),記g為以這個有序對(x, y)作參量的函數,這個函數的值是xy。
- 科學研究中經常出現未知或不能給出表達式的函數。例如地球上不同時刻溫度的分布,這一函數以地點和時間為參量,以某一地點、某一時刻的溫度作為輸出。
- 函數的概念並不局限於數的計算,甚至也不局限於計算。函數的數學概念更為寬泛,而且不僅僅包括數之間的映射關係。函數將「定義域」(輸入集)與「對映域」(可能輸出集)聯繫起來,使得定義域的每一個元素都唯一對應對映域中的一個元素。函數,如下文所述,被抽象定義為確定的數學關係。由於函數定義的一般性,函數概念對於幾乎所有的數學分支都是很基本的。
歷史
函數這個數學名詞是萊布尼茲在1694年開始使用的,以描述曲線的一個相關量,如曲線的斜率或者曲線上的某一點。萊布尼茲所指的函數現在被稱作可導函數,數學家之外的普通人一般接觸到的函數即屬此類。對於可導函數可以討論它的極限和導數。此兩者描述了函數輸出值的變化同輸入值變化的關係,是微積分學的基礎。
- 1718年,約翰·貝努里(en:Johann Bernoulli)把函數定義為「一個變量的函數是指由這個變量和常量以任何一種方式組成的一種量。」1748年,約翰·貝努里的學生歐拉(Leonhard Euler)在《無窮分析引論》一書中說:「一個變量的函數是由該變量和一些數或[常量]]以任何一種方式構成的解析表達式」。例如f(x) = sin(x) + x3。1775年,歐拉在《微分學原理》一書中又提出了函數的一個定義:「如果某些量以如下方式依賴於另一些量,即當後者變化時,前者本身也發生變化,則稱前一些量是後一些量的函數。」
- 通過擴展函數的定義,數學家能夠對一些「奇怪」的數學對象進行研究,例如不可導的連續函數。這些函數曾經被認為只具有理論價值,遲至20世紀初時它們仍被視作「怪物」。稍後,人們發現這些函數在對如布朗運動之類的物理現象進行建模時有重要的作用。
- 到19世紀末,數學家開始嘗試利用集合論來規範數學。他們試圖將每一類數學對象定義為一個集合。狄利克雷(Johann Peter Gustav Lejeune Dirichlet)給出了現代正式的函數定義(參見下文#正式定義)。狄利克雷的定義將函數視作數學關係的特例。然而對於實際應用的情況,現代定義和歐拉定義的區別可以忽略不計。
正式定義
從輸入值集合X 到可能的輸出值集合Y 的函數f(記作 f : X → Y)是X與Y的關係,滿足如下條件:
- f 是完全 的:對X 中任一元素x 都有集合Y 中的元素y 滿足x f y (x 與y 是f 相關的)。即,對每一個輸入值,Y 中都有至少一個與之對應的輸出值。
- f 是多對一 的:若x f y 且x f z ,則y = z 。即,多個輸入可以映射到一個輸出,但一個輸入不能映射到多個輸出。
定義域中任一x 在對映域中唯一對應的y 記為f(x)。
比上面定義更簡明的表述如下:從X 映射到Y 的函數f 是X 與Y 的直積X × Y 的子集。X 中任一x 都與Y 中的y 唯一對應,且有序對(x, y)屬於f 。
X與Y的關係若滿足條件(1),則為多值函數。函數都是多值函數,但多值函數不都是函數。X與Y的關係若滿足條件(2),則為部分函數。函數都是部分函數,但部分函數不都是函數。除非特別指明,本百科全書中的「函數」總是指同時滿足以上兩個條件的關係。
考慮如下例子:
File:NotMap1.png | 完全,但非多對一。X中的元素3與Y中的兩個元素b 和c 相關。因此這是多值函數,但不是 函數。 | |
多對一,但非完全。 X 的元素1未與Y 的任一元素相關。因此這是部分函數,但不是 函數。 | ||
File:Mathmap2.png | 完全且多對一。因此這是從X到Y的函數。此函數可以表示為f ={(1, d), (2, d), (3, c)},或
|
定義域、對映域和值域
輸入值的集合X被稱為f 的定義域;可能的輸出值的集合Y被稱為f 的陪域。函數的值域是指定義域中全部元素通過映射f 得到的實際輸出值的集合。注意,把對映域稱作值域是不正確的,函數的值域是函數的對映域的子集。
計算機科學中,參量和返回值的數據類型分別確定了子程序的定義域和對映域。因此定義域和對映域是函數一開始就確定的強制約束。另一方面,值域和實際的實現有關。
內射、滿射與雙射函數
- 內射函數,將不同的變量映射到不同的值。即:若x和y屬於定義域,則僅當x = y時有f(x) = f(y)。
- 滿射函數,其值域即為其對映域。即:對映射f的對映域中之任意y,都存在至少一個x滿足f(x) = y。
- 雙射函數,既是單射的又是滿射的。也叫一一對應。雙射函數經常被用於表明集合X和Y是等勢的,即有一樣的基數。如果在兩個集合之間可以建立一個一一對應,則說這兩個集合等勢。
像和原象
元素 x∈X在 f 的像 就是 f(x)。
子集 A⊂X 在 f 的像是以其元素的像組成 Y的子集,即
- f(A) := {f(x) : x ∈ A}。
注意 f 的值域就是定義域 X 的像 f(X)。在我們的例子裡, {2,3} 在 f 的像是 f({2, 3}) = {c, d} 而 f 的值域是 {a, c, d}。
根據此定義,f 可引申成為由 X 的能集(由 X 的 子集組成的集)到 Y 的能集之函數,沖,亦記作 f。
子集 B ⊂ Y 在 f 的 原像 (或逆像)是如下定義 X的子集:
- f −1(B) := {x ∈ X : f(x)∈B}。
在我們的例子裡,{a, b} 的原像是 f −1({a, b}) = {1}。
根據此定義,f −1 是由 Y 的能集到 X 的能集之函數。
以下是 f 及 f −1 的一些特性:
- f(A1 ∪ A2) = f(A1) ∪ f(A2).
- f(A1 ∩ A2) ⊆ f(A1) ∩ f(A2).
- f −1(B1 ∪ B2) = f −1(B1) ∪ f −1(B2).
- f −1(B1 ∩ B2) = f −1(B1) ∩ f −1(B2).
- f(f −1(B)) ⊆ B.
- f −1(f(A)) ⊇ A.
這些特性適合定義域的任意子集 A, A1 及 A2 和輸出值域的任意子集 B, B1 及 B2,甚至可推廣到任意子集群的交集和並集。
函數圖像
函數f 的圖像是平面上點對(x,f(x))的集合,其中x取定義域上所有成員的。函數圖像可以幫助理解證明一些定理。
如果X 和Y 都是連續的線,則函數的圖像有很直觀表示,如右圖是立方函數的圖像:
注意兩個集合X 和Y 的二元關係有兩個定義:一是三元組(X,Y,G),其中G 是關係的圖;二是索性以關係的圖定義。用第二個定義則函數 f 等於其圖象。
函數例子
(詳見函數列表.)
- 某一特定時刻在中國每一人口與其體重之關係「wght」。
- 每個國家與其首都之關係(若不把多首都國[1]計算在內)。
- 每個自然數 n 與其平方 n² 之關係「sqr」。
- 每個正實數 x 與其自然對數 ln x 之關係「ln」。注意,對於所有實數 x,ln 其實不是一個函數,因為並不是所有實數在 ln 里都有定義,即是 ln 不是完全 (total) 的。
- 每個在 平面上的點與其和原點 (0, 0) 的距離之關係「dist」
- 每個在 有孔平面 (Puntured plane) 上的點與描述該點受到原點發出的引力的矢量。
最常用的數學函數包括加法、減法、乘法、除法、冪、對數、根號、多項式、有理函數、三角函數等。它們統稱為「初等函數」-- 但此名的定義會隨使用的數學分支而改變。非初等函數(或特殊函數)包括 Bessel函數和伽傌函數。
函數的特性
函數可分為
歧義函數
歧義函數指可於一條數學等式中找到不少於一個正確答案。例如,4的平方根可以是2或者-2而兩者的平方皆是4。
嚴格來說,歧義函數不完全算是函數,因為數學函數的定義對於一個輸入值只能有唯一一個輸出值。實際上,這樣的「函數」通常被稱為關係式。
n-元函數: 多元函數
n-元函數是指輸入值為 n-元組的函數。或者說,若一函數的輸入值域為 n 個集合的積集的子集,這函數就是 n-元函數。例如, 距離函數 dist((x,y)) 是一個二元函數,輸入值是由兩個點組成的序對。另外,多複變函數(即輸入值為複數的多元組)是一個重要的數學課題。
在抽象代數中, 運算元其實都是函數,如乘法 "*" 是個二元函數:我們寫 x*y 其實是 *(x,y)的中綴表達法。
函數式程序設計是一個以函數概念為中心的重要理論範例,其中的運算對象為多元函數,基本語法基於λ演算,而函數的複合(見下)則採用代換來完成。特別地,通過一種稱為Currying的變換,可將多元函數變換為一元函數。
複合函數
函數 f: X → Y 及 g: Y → Z 的複合函數是
- g o f: X → Z :(g o f)(x) = g(f(x))。
舉例, 飛機在 t 時刻的高度是 h(t),而高度 x 處的氧氣濃度是 c(x),則在 t 時刻飛機周圍的氧氣濃度是 (c o h)(t)。
若 Y⊂X 則 f 可自我複合; 此時複合函數可記作 f 2(不要與三角學的符號混淆)。函數的冪的定義是對自然數 n 有
- f n+1= f n o f= f of n。
反函數
對一個函數 f:X→Y ,若值域 Y 中任何一個元素 y 的原象是唯一的,那麼這個函數就被稱為是雙射的。對任意的 y∈Y 到它的原象f−1(y)的映射,我們稱之為 f 的反函數,記為 f−1。
舉一個反函數的例子,比如 f(x) = x2 ,它的反函數是 f(x)−1 = √x 。[啊恩!...你必須指明它的定義域是...如果你說定義域是R,那就錯了]同樣,2x 的反函數是 x/2。反函數是一個函數,它能夠「抵消」它的原函數。參見逆映射。
限制及擴張
給出 的子集 以及函數
- ,
則
稱為 在 的限制。
反之,若給出函數
則一個定義在 的函數 適合 ,就是 的擴張。
點態運算
設函數 f: X → R 及g: X → R 有 X 為共同的輸入值域及環 R 為共同輸出值域。 我們可以定義函數和 f + g: X → R 及函數積 f × g: X → R 如下:
- (f + g)(x) := f(x) + g(x);
- (f × g)(x) := f(x) × g(x);
for all x in X。
這樣子我們得出一個函數組成的環。這是一個抽象性擴張的例子,由此我們由較簡單的結構得出更複雜的。
若然以抽象代數 A 代替 R, 得出的由 X 到 A 的函數集會類似地擁有和 A 相同的代數結構。
可計算和不可計算函數
所有從整數到整數的可計算函數的個數是可數的,這是因為所有可能的算法個數是可數的。從整數 到整數的函數個數要更多些-和實數個數一樣多,也就是說是等勢的。這說明有些從整數到整數的函數是不可計算的。關於不可計算函數,請參看停機問題和萊斯定理。
範疇學中的函數
函數定義為定義域X與上域Y的關係。而在範疇學中,函數的槪念被擴張成射的槪念。 一個範疇包括一組物件與一組射,每一個射是個有序三元組(X, Y, f),其中f是從定義域X到上域Y的一個關係,而定義域與上域是範疇內的物件。基於這種解釋,可以把函數看作集合範疇裡面的射。
參見
*Visual Calculus by Lawrence S. Husch, University of Tennessee (2001)
外部連接
- Wolfram函數網站, 匯集了各數學函數的公式和圖像
- xFunctions 一個多功能的Java小程序,可以顯示函數的圖像,既可以在線使用,也可以下載運行。