函數

函數（function）是數學描述對應關係的一種特殊集合；粗略地說，從集合$X$到集合$Y$的函數將$Y$的一個元素恰好分配給$X$的每個元素。集合$X$稱為函數的定義域，集合$Y$稱為函數的到達域。（注意不要與值域混淆）

函數最初是一個變化的量如何依賴另一個量的理想化。例如，特定時間行星的位置可以視為是行星的位置對時間的函數。「函數」一詞作為數學概念是由萊布尼茨首先引入的。從歷史上看，這個概念是在17世紀末用無窮微積分來闡述的，直到19世紀，所考慮的函數都是可微的。函數的概念於19世紀末在集合論中被形式化，這大大擴展了這個概念的應用領域。

## 簡介

若$x$是實數，以有序對$(x,\,x^2)$為元素所構成的集合就是一個函數。直觀上代表「輸入」$x$就可以得到唯一值$x^2$的對應關係。

一般會以英文字母$f,\,g,\,h$表示函數，並把$x$依據函數$f$的對應規則所得到的值寫作$f(x)$，並讀作「f of x」。函數的概念不限於數之間的對應關係，例定義函數$\operatorname{Capital}$為世界上所有國家跟它現在的首都的對應關係，那輸入英國就會輸出唯一值倫敦：$\operatorname{Capital}(\mathrm{U.K.}) = \mathrm{London}$。

直觀上的「多變數函數」其實也可以概括到一般函數的定義裡。例如算式$x\times y$有兩個實數參數$x$和$y$。可以將這兩個參數看作一個實數有序對$(x,y)$，然後定義一個以$((x,\,y),\,x\times y)$為元素所構成的函數$f$，然後把$f[(x,\,y)] = x \times y$簡記成符合直觀的$f(x,\,y) = x \times y$。

數學中，對應、映射、變換通常都是函數的別稱，但也可能有別的意思，如在拓撲學的映射有時代表的是連續函數。

在類型論的λ演算中，「對應關係」可以是作為一個原始概念（也就是無定義名詞），而不像上述的定義把函數視為集合的衍伸物。

函數的值域或像是定義域中所有元素的像之集合。

## 歷史

函數（function）這個數學名詞是萊布尼茲在1694年開始使用的，用來描述跟曲線相關的一個量，如曲線的斜率或者曲線上的某一點。萊布尼茲所指的函數現在被稱作可導函數，數學家之外的普通人一般接觸到的函數即屬此類。對於可導函數可以討論它的極限和導數，此兩者描述了函數輸出值的變化同輸入值變化的關係，是微積分學的基礎。中文的「函數」一詞由清朝數學家李善蘭譯出。其《代數學》書中解釋：「凡此變數中函（包含）彼變數者，則此為彼之函數」。

- 1718年，約翰·伯努利把函數定義為「一個變量的函數是指由這個變量和常量以任何一種方式組成的一種量。」
- 1748年，伯努利的學生歐拉在《無窮分析引論》一書中說：「一個變量的函數是由該變量和一些數或常量以任何一種方式構成的解析表達式」，例如$f(x)=\sin(x)+x^2$。
- 1775年，歐拉在《微分學原理》一書中又提出了函數的一個定義：「如果某些量以如下方式依賴於另一些量，即當後者變化時，前者本身也發生變化，則稱前一些量是後一些量的函數。」
- 19世紀的數學家開始對數學的各個分支進行形式化。維爾斯特拉斯倡議將微積分學建立在算術，而不是幾何的基礎上，這種主張較趨向於歐拉的定義。
- 函數的定義得以擴展之後，數學家便能對一些「奇怪」的數學對象進行研究，例如處處不可導的連續函數。這些函數曾經被認為只具有理論價值，遲至20世紀初時它們仍被視作「怪物」。稍後，人們發現這些函數在對如布朗運動之類的物理現象進行建模時有重要的作用。
- 到19世紀末，數學家開始嘗試利用集合論來進行數學的形式化。他們試圖將每一個數學對象都定義為集合。狄利克雷給出了現代正式的函數定義（參見下文#正式定義）。在他的定義下，函數被視作數學關係的特例。然而對於實際應用的情況，現代定義和歐拉定義的區別可以忽略不計。

## 正式定義

二元關係 $f$ 若滿足：

$$(\forall a)(\forall b)(\forall b^{\prime}) \{\, <pre> [\,(\langle a,\,b \rangle \in f) \wedge (\langle a,\,b^{\prime}\rangle \in f)\,] \Rightarrow (b=b^{\prime}) </pre> \,\}$$

則稱為 $f$ 為一函數。

（為了避免$(x,\,y)$的括弧與邏輯敘述的括弧混淆，本頁面也以$\langle x,\,y \rangle$表示有序對）

也就是直觀上，有序對$(x,\,y)$代表(輸入值, 輸出值)；而$f$本身是以窮舉所有(輸入值, 輸出值)來詳盡定義的對應規則，且每個輸入值只能對應一個輸出值。

### 函數值的簡記

習慣上把$(x,\,y)\in f$「等價地」記為$y=f(x)$。但嚴格來說，$f(x)$是在一階邏輯公理化集合論下額外新增的雙元函數符號（因為$x$與$f$各為一個變數），而它的「定義」就是以下新增的公理：

$$\{\,\neg(\mathcal{B}\wedge\mathcal{C}_x) \wedge [\,f(x)=\varnothing\,]\,\} \vee \{\,(\mathcal{B}\wedge\mathcal{C}_x) \wedge [\,\langle x,\,f(x) \rangle \in f\,]\,\}$$

其中：

$\mathcal{B} := (\forall a)(\forall b)(\forall b^{\prime}) \{\, <pre> [\,(\langle a,\,b \rangle \in f) \wedge (\langle a,\,b^{\prime}\rangle \in f)\,] \Rightarrow (b=b^{\prime}) </pre> \,\}$ （$f$ 的每個輸入值只對應一個輸出值）

$\mathcal{C}_x := (\exists y)(\langle x,\, y \rangle \in f) <pre>$ （$x$ 在 $f$ 規定的輸入值範圍內）

新增公理的合理性假設有$\mathcal{B} \wedge \mathcal{C}_x$，此時對公式$\mathcal{B}$套用量詞公理A4有： :$(\forall b)(\forall b^{\prime}) \{\, [\,(\langle x,\,b \rangle \in f) \wedge (\langle x,\,b^{\prime}\rangle \in f)\,] \Rightarrow (b=b^{\prime}) \,\}$ 這樣綜合上式和$\mathcal{C}_x$，並利用A4和普遍化將$\mathcal{C}_x$中的$y$代換成$b$就有： :$(\exists! b)(\langle x,\,b \rangle \in f)$ 換句話說： :$\mathcal{B} \wedge \mathcal{C}_x \vdash (\exists! b)(\langle x,\,b \rangle \in f)$ 這樣根據特定條件下的存在性就有： :$\vdash (\exists! b)\{\, [\,\neg(\mathcal{B}\wedge\mathcal{C}_x) \wedge (b=\varnothing)\,] \vee [\,(\mathcal{B}\wedge\mathcal{C}_x) \wedge (\langle x,\,b \rangle \in f)\,] \,\}$ 這樣根據函數符號與唯一性的內容，就可以於策梅洛-弗蘭克爾集合論增加上述的公理與雙元函數符號$f(x)$，且新增這個公理的新理論等效於原來的理論。

直觀上，這個公理表示「若$f$為一函數且$x$在$f$的輸入值範圍，則$\langle x,\,f(x) \rangle \in f$；否則規定$f(x)$為空集」。

這樣根據函數符號與唯一性的定理(E)和普遍化，就會有本節一開始所期望的直觀性質：

$$\mathcal{B} \land \mathcal{C}_x \vdash (\forall y)\{\, <pre> [\,y = f(x)\,] \Leftrightarrow [\,\langle x,\, y \rangle \in f\,] </pre> \,\}$$

也就是「若$f$為一函數且$x$在$f$的輸入值範圍，則對所有的$y$，$\langle x,\,y \rangle \in f$等價於$y = f(x)$」。

另一方面，對於直觀上「n個變數」的函數$\mathcal{f}$，也就是

$$\langle\,\langle x_1,\,\cdots,\,x_n \rangle,\,y \rangle = \langle x_1,\,\cdots,\,x_n,\,y \rangle \in f$$

換句話說

$$y = f \big(\langle x_1,\cdots,\, x_n \rangle \big)$$

這時習慣上會將$\mathcal{f}$的「函數值」進一步簡寫為

$$y = f(x_1,\cdots,\, x_n)$$

### 定義域與值域

如果能指出函數$f$的「輸入值範圍」跟「輸出值範圍」，對數學的討論是相當方便的；事實上公理化集合論中，分類公理確保對任意集合$A$有唯一的集合$D_A$和$I_A$（嚴格來說，單元函數符號）分別滿足

$(\forall x)\{(x \in D_A) \Leftrightarrow (\exists y)[\,(x,\,y) \in A\,]\}$（「輸入值範圍」）

$(\forall y)\{(y \in I_A) \Leftrightarrow (\exists x)[\,(x,\,y) \in A\,]\}$（「輸出值範圍」）

直觀上，$D_A$是蒐集所有$A$裡所有有序對的第一個所構成的集合；$I_A$是蒐集所有$A$裡所有有序對的第二個所構成的集合。這樣的話，如果$A$本身就是函數的話，$D_A$就是所謂的「輸入值範圍」，所以被稱為定義域；類似地，$I_A$就是所謂的「輸出值範圍」，所以被稱為值域。

通常情況下，有以下慣用的記號

$$f: X \to Y := [\,(f \text{ is a function}) \wedge (D_f=X) \wedge (I_f \subseteq Y)\,]$$

也就是直觀上，$f: X \to Y$表示「$f$是函數且其定義域為$X$，且值域包含於$Y$。」。這種情況下，$Y$通常被俗稱為對應域。

屬於定義域$D_f$的元素$x$常被俗稱為自變量（independent variable），而項$f(x)$則被俗稱為因變量（dependent variable），但是這跟實驗上的自變量和因變量是稍有不同的，因為前者是現實得到的實驗值之間的關聯，但另一個是源於集合論的概念。

### 一對一

函數 $f$ 若滿足

$$(\forall y)(\forall x)(\forall x^{\prime}) \{\, <pre> [\,(\langle x,\,y \rangle \in f) \wedge (\langle x^{\prime},\,y\rangle \in f)\,] \Rightarrow (x = x^{\prime}) </pre> \,\}$$

則被稱為一對一的（one-to-one）或是單射（injective function）。

直觀上，若函數$f$的輸出值都只能被唯一個輸入值對應，則稱$f$是一對一的。

若$f$是單射，那（根據分類公理所取的）以下的集合：

$$f^{-1}:=\{\,p\,|\,(\exists x)(\exists y)[\,p = (y,\,x)\,\wedge\, y = f(x) \,]\,\}$$

也是一個函數，被稱為$f$的反函數。

### 滿射

$f: X \to Y$這個簡記只能指出「輸出值不會超出$Y$」，為了彌補這個簡記的缺陷，口語上會將滿射（surjective function）定義為「$f: X \to Y$且值域就是$Y$」的函數。

（1）一對多。$X$中的元素3與$Y$中的兩個元素$b$和$c$相關。因此這是多值函數，而不是函數。

（2）一對一但非完全對應。$X$的元素1未與$Y$的任一元素相關。因此這是偏函數，而不是函數。

（3）完全對應且多對一，因此這是從$X$到$Y$的函數。此函數可以表示為$f=\{\,(1,d),(2,d),(3,c)\}$，或$f(x)=\left\{\begin{matrix} d, & \mbox{if }x=1 \\ d, & \mbox{if }x=2 \\ c, & \mbox{if }x=3\end{matrix}\right.$

## 函數的簡記

除了正式定義一節所規範的集合論表示法，一般的數學書籍會採用比較通俗的函數表記方法，下面將一一介紹。

### 函數記號

很多函數都是取實數為輸出值和輸入值，換句話說，都是$f: A \to \R$（$A \subseteq \R$），這些函數很多都是以實數的四則運算去定義的。但考慮到實數加法可由皮亞諾公理裡的單元函數符號$S(x)$（直觀上解釋成「$x$的下一個」，或說「$x + 1$」）建構出來，或被視為實數公理系統裡的雙元函數符號$P(x,\,y)$（簡記為$x + y$），實數加法其實是一階邏輯下的項；類似地，其他四則運算也可以此類推，而得出他們都是項的結論。所以直觀上定義實數函數的時候，都希望一條項（直觀上的運算式）能唯一決定一個函數，比如說，對於項：

$$x + 1$$

以下的集合：

$$h := \bigg\{ p \,\bigg|\, (\exists x \in \R)[ p = (x,\, x + 1)] \bigg\}$$

是一個函數。為了讓這類函數的表示更加簡潔，就衍伸出以下的表記方式：

$X_1,\,\dots,\,X_n$ 都是集合，$T$ 是含有變數 $x_1,\,\dots,\,x_n$ 的項，那在：

$$(\forall x_1 \in X_1)\dots(\forall x_n \in X_n)(\exists! y)(y = T)$$

前提下，則可做以下的符號定義：

$$f(x_1,\,\dots,\,x_n) = T \;\;(\langle x_1,\,\dots,\,x_n \rangle \in X_1 \times \dots \times X_n)\,$$

$$:=$$

$$f = \bigg\{ <pre> p \,\bigg|\, \exists x_1\dots\exists x_n[(\langle x_1,\,\dots,\,x_n \rangle \in X_1 \times \dots \times X_n) \wedge ( p = \langle x_1,\,\dots,\,x_n,\,T \rangle )] </pre> \bigg\}$$

這個表記方式被稱為函數記號（functional notation），直觀上表示「若從$X_i$依序取出地$x_i$代入$T$裡，都可以得到唯一的輸出值，那可以定義一個$f(x_1,\,\dots,\,x_n) = T$的函數」。（$T$有可能不滿足前提，從而無法定義這樣的一個函數，如取$T := x_1 + z$就無法得到唯一輸出值）

像是取$T$為$x + 1$的話，因為實數加法的性質而有：

$$(\forall x \in \R)(\exists! y)(y = x + 1)$$

因為單元對被規定成：

$$\langle x \rangle := x$$

這樣就可以把前面的函數$h$簡記為：

$$h(x) = x + 1 \; (x \in \R)$$

如果定義域可以從上下文推斷出來，函數記號可以更不正式的寫為：

$$f(x_1,\,\dots,\,x_n) = T$$

比如說函數$h$就可以進一步簡記為：

$$h(x) = x + 1$$

這個記號是1734年第一次被萊昂哈德·歐拉所採用。但當時並沒有清楚地區分函數、項與冪級數，因為當時並沒有一階邏輯這種清楚研究語言推理的系統；也並不知道有些物理應用的函數不能用冪級數展開。

### 箭號表示

以上的函數記號也可以稍作修改，來明確的指出「輸出值」的範圍：

$X_1,\, \dots ,\, X_n$ 與 $Y$ 都是集合，$T$ 是含有變數 $x_1,\,\dots,\,x_n$ 的項，在：

$$(\forall x_1 \in X_1)\dots(\forall x_n \in X_n)(\exists! y)[\, <pre> (y \in Y) \wedge (y = T) </pre> \,]$$

前提下，可做以下的符號定義：

$$f: X_1 \times \dots \times X_n \to Y ;\; \langle x_1,\,\dots,\,x_n \rangle \mapsto T$$

$$:=$$

$$f = \bigg\{ p \,\bigg|\, \exists x_1 \dots \exists x_n[ <pre> (\langle x_1,\,\dots,\,x_n\rangle \in X_1 \times \dots \times X_n) \wedge (p = \langle x_1,\,\dots,\,x_n,\, T \rangle) \wedge (T \in Y) </pre> ] \bigg\}$$

這個表記方式被稱為箭號表示（arrow notation），直觀上表示「若把從$X_i$依序取出地$x_i$代入$T$裡，都可以得到$Y$裡的某唯一輸出，那可以定義一個從$X$到$Y$，對應規則為$\langle x_1,\,\dots,\,x_n \rangle \mapsto T$的函數$f$」

上述符號也可以比較通俗地記為：

$$f: X_1 \times \dots \times X_n \to Y ;\;f(x_1,\,\dots,\,x_n) = T$$

比如說，取$T_x$為$x + 1$的話，因為實數加法的性質而有：

$$(\forall x \in \R)(\exists! y)[ <pre> (y \in \R) \wedge (y = x + 1) </pre> ]$$

因為$x \in \R$可以推出$x + 1 \in \R$，所以可把函數$h$表示成：

$$h: \R \to \R ;\;h(x) = x + 1$$

箭號表示常用來「固定」某個變數，來得到新的函數；假設$T_{xt}$是含有變數$x$和$t$的項，如果：

$$f: X\times T\to Y;\;(x,t) \mapsto T_{xt}$$

$$\tau \in T$$

那根據：

$$(\forall x)(\forall y)(\forall x^{\prime})(\forall y^{\prime})\{ <pre> (\langle x, y \rangle = \langle x^{\prime}, y^{\prime}\rangle) \Leftrightarrow [(x = x) \wedge (y^{\prime} = y^{\prime})] </pre> \}$$

若假設$T_{x\tau}$是將$T_{xt}$裡的$t$都代換成$\tau$所形成的新項，那以下的符號簡寫也是可行的：

$$f_\tau: X\to Y;\; x \mapsto T_{x\tau}$$

直觀上來說，$f_\tau$是把$f$第二個變數$t$「固定」成特定的$\tau$所得到的新函數，英文上也可稱為partial applied function。

### 間隔號表示

可以把箭號表示裡的$x$都取代成間隔號，變成更通俗直觀的間隔號表示，比如說：

$$f: \R \to \R;\;x \mapsto x^2$$

可以記為：

$${(\cdot)}^2$$

或是對於$[a,\,b]$可積的$f: [a,\,b] \to \R$，作如下定義的話：

$$g: [a,\,b] \to \R;\;x \mapsto \int_a^x f(u) \,du$$

函數$g$的定義亦可不正式的記為：

$$\int_a^{(\cdot)} f(u) \,du$$

但這個表記方法的明顯缺點是無法指出定義域，因為函數於哪個區間可積會決定以上的函數$g$的定義可不可行。

## 函數圖形

如果函數$f$的值域跟定義域都是實數集合（俗稱$f$為實函數），可以x軸代表定義域的範圍；y軸代表值域的範圍，把函數的每個元素標示在平面直角坐標上，這被稱為實函數$f$在平面上的函數圖形。

對於「雙變數」的實函數$g$，也就是以($x,\,y,\,z\in\mathbb{R}$)

$$((x,\,y),\,z)$$

為元素的函數，可以取

$$D_x = \{\,x\,|\,(\exists y)(\exists z)[\, g(x,\,y)=z\,]\,\}$$

$$D_y = \{\,x\,|\,(\exists x)(\exists z)[\, g(x,\,y)=z\,]\,\}$$

然後以x軸為$D_x$變化範圍；y軸為$D_y$變化範圍；最後取z軸為$g$的值域變化範圍，這樣就可以在三維直角坐標繪出$g$的函數圖形。

### 實函數的判別

平面上的任意圖形可用豎直判別法判斷是否為實函數的圖形，即圖形與任何一條平行於y軸的直線不能有一個以上的交點。但實際上這僅僅是函數正式定義的一種應用，因為平行於y軸的直線代表的是形如

$$\{\,p\in{\mathbb{R}}^2\,|\,(\exists y \in \mathbb{R})[\, p = (c,\,y)\,]\,\}$$

集合，也就是此直線交x軸於$(c,\, 0)$，那這樣直線與實函數$f$的交集就是

$$\{\,p\in{\mathbb{R}}^2\,|\,(\exists y \in \mathbb{R})[\, p = (c,\,y) \wedge y = f(c)\,]\,\}$$

而屬於這個交集裡的平面點最多只能有一個，否則就會跟每個$x\in D_f$只能對應一個$f(x)$的基本定義矛盾。

## 像和原像

像可以指兩種不同的概念

第一種是形如$f(x)$的項，直觀上代表的是依照函數$f$的對應規則，使$x$能對應到的那個「值」。(嚴謹的意義請回去參考函數值的簡記)

第二種指的是集合$A$在函數$f$下定義的集合$f(A)$

$$f(A) := \{\,y \,|\, (\exists x\in A)[\,y=f(x)\,] \,\}$$

注意$f$的值域就是定義域$D_f$的像$f(D_f)$。在正式定義一節的最後例子中，$\{2,3\}$在$f$的像是$f(\{2, 3\})=\{c, d\}$，而$f$的值域是$\{c, d\}$。

類似的，集合$B$在函數$f$下的原像（或逆像）定義為：

$$f^{-1}(B):=\{\,x\,|\, (\exists y)[\,y=f(x) \wedge y \in B\,]\,\}$$

沿用同一例子，可以看到$\{a, b\}$的原像是$f^{-1}(\{a, b\}) = \varnothing$，即空集。

以下是$f$及$f^{-1}$的一些特性：

- $f(A_{1} \cup A_{2}) = f(A_{1}) \cup f(A_{2})$。
- $f(A_{1} \cap A_{2}) \subseteq f(A_{1}) \cap f(A_{2})$。
- $f(B_{1} \cup B_{2}) = f^{-1}(B_{1}) \cup f^{-1}(B_{2})$。
- $f^{-1}(B_{1} \cap B_{2}) = f^{-1}(B_{1}) \cap f^{-1}(B_{2})$。
- $f^{-1}(f(B)) \subseteq B$。
- $f^{-1}(f(A)) \supseteq A$。

這些特性適合定義域的任意子集$A, A_{1}$及$A_{2}$和到達域的任意子集$B, B_{1}$及$B_{2}$，甚至可推廣到任意子集群的交集和併集。

## 函數的限制及擴張

若$f:X \to Y$且$X^{\prime} \subset X$，那以下定義的集合$f|_{X^{\prime}}$(注意到$\times$代表笛卡兒積)

$$f|_{X^{\prime}}:= \bigg\{\,(x,\,y)\,\bigg|\, <pre> (x \in X^{\prime}) \wedge [\,y=f(x)\,] </pre> \,\bigg\} = f \cap (X^{\prime} \times Y)$$

顯然為一函數，稱為$f$在$X^{\prime}$的限制。

反之，若$g:X\to Z$、$X\subseteq Y$、$f:Y\to Z$且$f|_X=g$，那$f$稱為$g$的擴張。

通常希望擴張後的函數為解析函數，因為代數性質良好。這種擴張稱為解析延拓。

## 點態運算

設$f:X \to R$且$g:X \to R$且$(R,\,+,\,\times)$為環。這樣可以定義「函數和」$f+g$與「函數積」$f \times g$如下：

$$\begin{align} <pre> f + g := \bigg\{\,(x,\,y)\,\bigg|\, (x \in X) \wedge [\,y=f(x)+g(x)\,] \,\bigg\} \\ </pre> \end{align}$$

$$\begin{align} <pre> f + g := \bigg\{\,(x,\,y)\,\bigg|\, (x \in X) \wedge [\,y=f(x) \times g(x)\,] \,\bigg\} \\ </pre> \end{align}$$

很容易證明以上兩者也是函數，類似的對任意的$r \in R$可以定義下面這兩個集合

$$\begin{align} <pre> r_R := \bigg\{\,(x,\,y)\,\bigg|\, (x \in X) \wedge (y = r) \,\bigg\} \\ </pre> \end{align}$$

$$\begin{align} <pre> r\cdot f := \bigg\{\,(x,\,y)\,\bigg|\, (x \in X) \wedge [\,y = r \times f(x)\,] \,\bigg\} \\ </pre> \end{align}$$

也是函數，其中$r_R$被稱為常數函數。

## 範例

- 首都之於國家（若不把多首都國計算在內)。
- 每個自然數$n$的平方$n^2$是$n$的函數。
- 對數函數。$\ln x$是正實數$x$的函數。注意，雖然可以把對數函數推廣到複數情況，但結果就不是函數了，而是多值函數。
- 對每個在$\R^2$平面上的點，其和原點$(0, 0)$的距離是確定的。

常用的數學函數包括多項式函數、根式函數、冪函數、對數函數、有理函數、三角函數、反三角函數等。它們都是初等函數。非初等函數（或特殊函數）包括伽馬函數和貝塞爾函數等。

## 分類

函數可分為

- 奇函數或偶函數
- 連續函數或不連續函數
- 實函數或虛函數
- 純量函數或向量函數
- 單調增函數或單調減函數

## 範疇論觀點

在範疇論中，函數的槪念被推廣為態射的槪念。

一個範疇包括一組物件與一組態射，每一個態射是個三元組(X, Y, f)，X稱為源物件（定義域的類比），Y稱為目標物件（到達域的類比），而源物件與目標物件是範疇內的物件。基於這種解釋，可以把函數看作集合範疇裡面的態射。

## 延伸閱讀

- An approachable and diverting historical presentation.

## 外部連結

- NIST數學函數
- mysuc.com，經典函數示例
- Wolfram函數網站，匯集了各數學函數的公式和圖像
- Was ist eine Funktion?
- xFunctions一個多功能的Java小程序，可以顯示函數的圖像，既可以在線使用，也可以下載運行。
- FooPlot
- Curvas