函数(英語:function)是數學描述對應關係的一種特殊集合;粗略地說,從集合 X {\displaystyle X} 到集合 Y {\displaystyle Y} 的函數將 Y {\displaystyle Y} 的一個元素恰好分配給 X {\displaystyle X} 的每個元素[2]。集合 X {\displaystyle X} 稱為函數的定义域[3],集合 Y {\displaystyle Y} 稱為函數的到达域。[4]
函數最初是一個變化的量如何依賴另一個量的理想化。例如,特定時間行星的位置可以視為是行星的位置對時間的函數。“函数”一词作为数学概念是由莱布尼茨首先引入的。[5]從歷史上看,這個概念是在17世紀末用無窮微積分來闡述的,直到19世紀,所考慮的函數都是可微的。函數的概念於19世紀末在集合論中被形式化,這大大擴展了這個概念的應用領域。
若 x {\displaystyle x} 是實數,以有序對 ( x , x 2 ) {\displaystyle (x,\,x^{2})} 為元素所構成的集合就是一個函数。直觀上代表「輸入」 x {\displaystyle x} 就可以得到唯一值 x 2 {\displaystyle x^{2}} 的對應關係。
一般會以英文字母 f , g , h {\displaystyle f,\,g,\,h} 表示函数,並把 x {\displaystyle x} 依據函数 f {\displaystyle f} 的對應規則所得到的值写作 f ( x ) {\displaystyle f(x)} ,並讀作「f of x」。函数的概念不限於數之间的對應关系,例定义函数 Capital {\displaystyle \operatorname {Capital} } 為世界上所有國家跟它現在的首都的對應關係,那輸入英国就會输出唯一值伦敦: Capital ( U . K . ) = L o n d o n {\displaystyle \operatorname {Capital} (\mathrm {U.K.} )=\mathrm {London} } 。
直觀上的「多變數函數」其實也可以概括到一般函數的定義裡。例如算式 x × y {\displaystyle x\times y} 有兩個實數參數 x {\displaystyle x} 和 y {\displaystyle y} 。可以將這兩個參數看作一個實數有序对 ( x , y ) {\displaystyle (x,y)} ,然後定義一個以 ( ( x , y ) , x × y ) {\displaystyle ((x,\,y),\,x\times y)} 為元素所構成的函數 f {\displaystyle f} ,然後把 f [ ( x , y ) ] = x × y {\displaystyle f[(x,\,y)]=x\times y} 簡記成符合直觀的 f ( x , y ) = x × y {\displaystyle f(x,\,y)=x\times y} 。
數學中,对应、映射、变换通常都是函数的別稱,但也可能有別的意思,如在拓扑學的映射有时代表的是连续函数。
在類型論的λ演算中,「對應關係」可以是作為一個原始概念(也就是無定義名詞),而不像上述的定義把函數視為集合的衍伸物。
函數的值域或像是定义域中所有元素的像之集合。[6][7][8][9]
函数(function)这个数学名词是莱布尼兹在1694年开始使用的,用來描述跟曲线相关的一個量,如曲线的斜率或者曲线上的某一点。莱布尼兹所指的函数现在被称作可导函数,数学家之外的普通人一般接触到的函数即属此类。对于可导函数可以讨论它的极限和导数,此两者描述了函数输出值的变化同输入值变化的关系,是微积分学的基础。中文的「函数」一词由清朝数学家李善兰译出。其《代数学》书中解释:「凡此變數中函(包含)彼變數者,則此為彼之函數」。
定義 — 二元關係 f {\displaystyle f} 若滿足:
則稱為 f {\displaystyle f} 為一函數。
(為了避免 ( x , y ) {\displaystyle (x,\,y)} 的括弧與逻辑敘述的括弧混淆,也會用 ⟨ x , y ⟩ {\displaystyle \langle x,\,y\rangle } 來表示有序对)
也就是直觀上,有序对 ( x , y ) {\displaystyle (x,\,y)} 代表(輸入值, 輸出值);而 f {\displaystyle f} 本身是以窮舉所有(輸入值, 輸出值)來詳盡定義的對應規則,且每個輸入值只能對應一個輸出值。
習慣上把 ( x , y ) ∈ f {\displaystyle (x,\,y)\in f} 「等價地」記為 y = f ( x ) {\displaystyle y=f(x)} 。但嚴謹來說, f ( x ) {\displaystyle f(x)} 是在一阶逻辑公理化集合论下額外新增的雙元函數符號(因為 x {\displaystyle x} 與 f {\displaystyle f} 各為一個變數),而它的「定義」就是以下連帶額外增加的公理:
公理 —
這樣綜合上式和 C {\displaystyle {\mathcal {C}}} 就有:
換句話說:
這樣根據特定條件下的存在性就有:
這樣根據函數符號與唯一性的內容,就可以於策梅洛-弗兰克尔集合论增加上述的公理與雙元函數符號 f ( x ) {\displaystyle f(x)} ,且新增這個公理的新理論等效於原來的理論。
直觀上,這個公理表示「若 f {\displaystyle f} 為一函數且 x {\displaystyle x} 在 f {\displaystyle f} 的輸入值範圍,則 ⟨ x , f ( x ) ⟩ ∈ f {\displaystyle \langle x,\,f(x)\rangle \in f} ;否則規定 f ( x ) {\displaystyle f(x)} 為空集」。
這樣根據函數符號與唯一性的定理(E),就會有本節一開始所說的直觀性質:
也就是「若 f {\displaystyle f} 為一函數且 x {\displaystyle x} 在 f {\displaystyle f} 的輸入值範圍,則對所有的 y {\displaystyle y} , ⟨ x , y ⟩ ∈ f {\displaystyle \langle x,\,y\rangle \in f} 等價於 y = f ( x ) {\displaystyle y=f(x)} 」。
對於「n變數」的函數,也就是以
為元素的函數 f {\displaystyle {\mathcal {f}}} ,習慣上會把以下的項
進一步簡寫為
如果能指出函數 f {\displaystyle f} 的「輸入值範圍」跟「輸出值範圍」,對數學的討論是相當方便的;事實上公理化集合論中,分类公理確保對任意集合 A {\displaystyle A} 有唯一的集合 D A {\displaystyle D_{A}} 和 I A {\displaystyle I_{A}} (嚴格來說,單元函數符號)分別滿足
直觀上, D A {\displaystyle D_{A}} 是蒐集所有 A {\displaystyle A} 裡所有有序对的第一個所構成的集合; I A {\displaystyle I_{A}} 是蒐集所有 A {\displaystyle A} 裡所有有序对的第二個所構成的集合。這樣的話,如果 A {\displaystyle A} 本身就是函數的話, D A {\displaystyle D_{A}} 就是所謂的「輸入值範圍」,所以被稱為定義域;類似地, I A {\displaystyle I_{A}} 就是所謂的「輸出值範圍」,所以被稱為值域。
通常情況下,有以下慣用的記號
也就是直觀上, f : X → Y {\displaystyle f:X\to Y} 表示「 f {\displaystyle f} 是函數且其定義域為 X {\displaystyle X} ,且值域包含於 Y {\displaystyle Y} 。」。這種情況下, Y {\displaystyle Y} 通常被俗稱為對應域。
屬於定義域 D f {\displaystyle D_{f}} 的元素 x {\displaystyle x} 常被俗稱為自變量(independent variable),而項 f ( x ) {\displaystyle f(x)} 則被俗稱為因變量(dependent variable),但是這跟實驗上的自变量和因变量是稍有不同的,因為前者是現實得到的實驗值之間的關聯,但另一個是源於集合論的概念。
定義 — 函數 f {\displaystyle f} 若滿足
( ∀ y ) ( ∀ x ) ( ∀ x ′ ) { [ ( ⟨ x , y ⟩ ∈ f ) ∧ ( ⟨ x ′ , y ⟩ ∈ f ) ] ⇒ ( x = x ′ ) } {\displaystyle (\forall y)(\forall x)(\forall x^{\prime })\{\,[\,(\langle x,\,y\rangle \in f)\wedge (\langle x^{\prime },\,y\rangle \in f)\,]\Rightarrow (x=x^{\prime })\,\}}
則被稱為一對一的(one-to-one)或是单射(injective function)。
直觀上,若函數 f {\displaystyle f} 的輸出值都只能被唯一個輸入值對應,則稱 f {\displaystyle f} 是一對一的。
若 f {\displaystyle f} 是單射,那(根據分类公理所取的)以下的集合:
也是一個函數,被稱為 f {\displaystyle f} 的反函數。
f : X → Y {\displaystyle f:X\to Y} 這個簡記只能指出「輸出值不會超出 Y {\displaystyle Y} 」,為了彌補這個簡記的缺陷,口語上會將满射(surjective function)定義為「 f : X → Y {\displaystyle f:X\to Y} 且值域就是 Y {\displaystyle Y} 」的函數。
除了正式定義一節所規範的集合論表示法,一般的數學書籍會採用比較通俗的函數表記方法,下面將一一介紹。
很多函數都是取实数為輸出值和輸入值,換句話說,都是 f : A → R {\displaystyle f:A\to \mathbb {R} } ( A ⊆ R {\displaystyle A\subseteq \mathbb {R} } ),這些函數很多都是以實數的四則運算去定義的。但考慮到实数加法可由皮亚诺公理裡的單元函數符號 S ( x ) {\displaystyle S(x)} (直觀上解釋成「 x {\displaystyle x} 的下一個」,或說「 x + 1 {\displaystyle x+1} 」)建構出來,或被視為实数公理系統裡的雙元函數符號 P ( x , y ) {\displaystyle P(x,\,y)} (簡記為 x + y {\displaystyle x+y} ),實數加法其實是一阶逻辑下的項;類似地,其他四則運算也可以此類推,而得出他們都是項的結論。所以直觀上定義实数函數的時候,都希望一條項(直觀上的運算式)能唯一決定一個函數,比如說,對於項:
以下的集合:
是一個函數。為了讓這類函數的表示更加簡潔,就衍伸出以下的表記方式:
符號定義 — X 1 , … , X n {\displaystyle X_{1},\,\dots ,\,X_{n}} 都是集合, T {\displaystyle T} 是含有變數 x 1 , … , x n {\displaystyle x_{1},\,\dots ,\,x_{n}} 的項,那在:
的前提下,則可做以下的符號定義:
這個表記方式被稱為函數記號(functional notation),直觀上表示「若從 X i {\displaystyle X_{i}} 依序取出地 x i {\displaystyle x_{i}} 代入 T {\displaystyle T} 裡,都可以得到唯一的輸出值,那可以定義一個 f ( x 1 , … , x n ) = T {\displaystyle f(x_{1},\,\dots ,\,x_{n})=T} 的函數」。( T {\displaystyle T} 有可能不滿足前提,從而無法定義這樣的一個函數,如取 T := x 1 + z {\displaystyle T:=x_{1}+z} 就無法得到唯一輸出值)
像是取 T {\displaystyle T} 為 x + 1 {\displaystyle x+1} 的話,因為實數加法的性質而有:
因為單元對被規定成:
這樣就可以把前面的函數 h {\displaystyle h} 簡記為:
如果定義域可以從上下文推斷出來,函數記號可以更不正式的寫為:
比如說函數 h {\displaystyle h} 就可以進一步簡記為:
這個記號是1734年第一次被萊昂哈德·歐拉所採用[10]。但當時並沒有清楚地區分函數、項與幂级数,因為當時並沒有一阶逻辑這種清楚研究語言推理的系統;也並不知道有些物理應用的函數不能用幂级数展開[11]。
以上的函數記號也可以稍作修改,來明確的指出「輸出值」的範圍:
符號定義 — X 1 , … , X n {\displaystyle X_{1},\,\dots ,\,X_{n}} 與 Y {\displaystyle Y} 都是集合, T {\displaystyle T} 是含有變數 x 1 , … , x n {\displaystyle x_{1},\,\dots ,\,x_{n}} 的項,在:
的前提下,可做以下的符號定義:
這個表記方式被稱為箭號表示(arrow notation),直觀上表示「若把從 X i {\displaystyle X_{i}} 依序取出地 x i {\displaystyle x_{i}} 代入 T {\displaystyle T} 裡,都可以得到 Y {\displaystyle Y} 裡的某唯一輸出,那可以定義一個從 X {\displaystyle X} 到 Y {\displaystyle Y} ,對應規則為 ⟨ x 1 , … , x n ⟩ ↦ T {\displaystyle \langle x_{1},\,\dots ,\,x_{n}\rangle \mapsto T} 的函數 f {\displaystyle f} 」
上述符號也可以比較通俗地記為:
比如說,取 T x {\displaystyle T_{x}} 為 x + 1 {\displaystyle x+1} 的話,因為實數加法的性質而有:
因為 x ∈ R {\displaystyle x\in \mathbb {R} } 可以推出 x + 1 ∈ R {\displaystyle x+1\in \mathbb {R} } ,所以可把函數 h {\displaystyle h} 表示成:
箭號表示常用來「固定」某個變數,來得到新的函數;假設 T x t {\displaystyle T_{xt}} 是含有變數 x {\displaystyle x} 和 t {\displaystyle t} 的項,如果:
那根據:
若假設 T x τ {\displaystyle T_{x\tau }} 是將 T x t {\displaystyle T_{xt}} 裡的 t {\displaystyle t} 都代換成 τ {\displaystyle \tau } 所形成的新項,那以下的符號簡寫也是可行的:
直觀上來說, f τ {\displaystyle f_{\tau }} 是把 f {\displaystyle f} 第二個變數 t {\displaystyle t} 「固定」成特定的 τ {\displaystyle \tau } 所得到的新函數,英文上也可稱為partial applied function。
可以把箭號表示裡的 x {\displaystyle x} 都取代成间隔号,變成更通俗直觀的間隔號表示,比如說:
可以記為:
或是對於 [ a , b ] {\displaystyle [a,\,b]} 可積的 f : [ a , b ] → R {\displaystyle f:[a,\,b]\to \mathbb {R} } ,作如下定義的話:
函數 g {\displaystyle g} 的定義亦可不正式的記為:
但這個表記方法的明顯缺點是無法指出定義域,因為函數於哪個區間可積會決定以上的函數 g {\displaystyle g} 的定義可不可行。
如果函數 f {\displaystyle f} 的值域跟定義域都是實數集合(俗稱 f {\displaystyle f} 為實函数),可以x軸代表定義域的範圍;y軸代表值域的範圍,把函數的每個元素標示在平面直角坐標上,這被稱為實函数 f {\displaystyle f} 在平面上的函數圖形。
對於「雙變數」的實函數 g {\displaystyle g} ,也就是以( x , y , z ∈ R {\displaystyle x,\,y,\,z\in \mathbb {R} } )
為元素的函數,可以取
然後以x軸為 D x {\displaystyle D_{x}} 變化範圍;y軸為 D y {\displaystyle D_{y}} 變化範圍;最後取z軸為 g {\displaystyle g} 的值域變化範圍,這樣就可以在三維直角坐標繪出 g {\displaystyle g} 的函數圖形。
平面上的任意圖形可用豎直判别法判斷是否為實函数的圖形,即图形与任何一条平行于y轴的直线不能有一个以上的交點。但實際上這僅僅是函數正式定義的一種應用,因為平行于y轴的直线代表的是形如
的集合,也就是此直線交x軸於 ( c , 0 ) {\displaystyle (c,\,0)} ,那這樣直線與實函數 f {\displaystyle f} 的交集就是
而屬於這個交集裡的平面點最多只能有一個,否則就會跟每個 x ∈ D f {\displaystyle x\in D_{f}} 只能對應一個 f ( x ) {\displaystyle f(x)} 的基本定義矛盾。
像可以指兩種不同的概念
第一種是形如 f ( x ) {\displaystyle f(x)} 的項,直觀上代表的是依照函數 f {\displaystyle f} 的對應規則,使 x {\displaystyle x} 能對應到的那個「值」。(嚴謹的意義請回去參考函數值的簡記)
第二種指的是集合 A {\displaystyle A} 在函數 f {\displaystyle f} 下定義的集合 f ( A ) {\displaystyle f(A)}
注意 f {\displaystyle f} 的值域就是定義域 D f {\displaystyle D_{f}} 的像 f ( D f ) {\displaystyle f(D_{f})} 。在正式定義一節的最後例子中, { 2 , 3 } {\displaystyle \{2,3\}} 在 f {\displaystyle f} 的像是 f ( { 2 , 3 } ) = { c , d } {\displaystyle f(\{2,3\})=\{c,d\}} ,而 f {\displaystyle f} 的值域是 { c , d } {\displaystyle \{c,d\}} 。
類似的,集合 B {\displaystyle B} 在函數 f {\displaystyle f} 下的原像(或逆像)定義為:
沿用同一例子,可以看到 { a , b } {\displaystyle \{a,b\}} 的原像是 f − 1 ( { a , b } ) = ∅ {\displaystyle f^{-1}(\{a,b\})=\varnothing } ,即空集。
以下是 f {\displaystyle f} 及 f − 1 {\displaystyle f^{-1}} 的一些特性:
這些特性適合定義域的任意子集 A , A 1 {\displaystyle A,A_{1}} 及 A 2 {\displaystyle A_{2}} 和到達域的任意子集 B , B 1 {\displaystyle B,B_{1}} 及 B 2 {\displaystyle B_{2}} ,甚至可推廣到任意子集群的交集和并集。
若 f : X → Y {\displaystyle f:X\to Y} 且 X ′ ⊂ X {\displaystyle X^{\prime }\subset X} ,那以下定義的集合 f | X ′ {\displaystyle f|_{X^{\prime }}} (注意到 × {\displaystyle \times } 代表笛卡儿积)
顯然為一函數,稱為 f {\displaystyle f} 在 X ′ {\displaystyle X^{\prime }} 的限制。
反之,若 g : X → Z {\displaystyle g:X\to Z} 、 X ⊆ Y {\displaystyle X\subseteq Y} 、 f : Y → Z {\displaystyle f:Y\to Z} 且 f | X = g {\displaystyle f|_{X}=g} ,那 f {\displaystyle f} 稱為 g {\displaystyle g} 的擴張。
設 f : X → R {\displaystyle f:X\to R} 且 g : X → R {\displaystyle g:X\to R} 且 ( R , + , × ) {\displaystyle (R,\,+,\,\times )} 為環。這樣可以定義「函數和」 f + g {\displaystyle f+g} 與「函數積」 f × g {\displaystyle f\times g} 如下:
很容易證明以上兩者也是函數,類似的對任意的 r ∈ R {\displaystyle r\in R} 可以定義下面這兩個集合
也是函數,其中 r R {\displaystyle r_{R}} 被稱為常數函數。
常用的数学函数包括多项式函數、根式函數、冪函數、对数函數、有理函数、三角函数、反三角函數等。它们都是初等函数。非初等函数(或特殊函数)包括伽马函數和贝塞尔函数等。
函數可分為
在范畴论中,函数的槪念被推廣為態射的槪念。
一個范畴包括一組物件與一組態射,每一個態射是個三元组(X, Y, f),X稱為源物件(定義域的類比),Y稱為目標物件(到達域的類比),而源物件与目標物件是范畴內的物件。基于这种解释,可以把函数看作集合范畴裡面的態射。
“函数”(function)一词作为数学概念首先由莱布尼茨引入