function
楔子
計算機只會計算數字。要讓電腦代替人腦處理真實世界的問題,首先要將人腦的抽象想法,一一對應到電腦的具體數值。
人腦感知到的事物,文字、色彩、聲音、圖片、形狀,透過人為的規則,化作數值。
人腦感知到的「事物」,在電腦裡就成了「數據」。人腦考慮的「各種可能性」與「流程規則」,在電腦裡就成了「各種輸入輸出」與「函數」。
例如人腦的「改變形狀」,在電腦裡就成了「數據代入函數」。
例如人腦的「打分數」,在電腦裡就成了「數據代入函數」。
numerical function
本文僅專注於輸入輸出都是數值的函數。
numerical function可以畫成圖形
函數畫成圖形,容易觀察理解。窮舉各種輸入,分別計算輸出,把輸入與輸出化作座標位置。
Plot3D[(x-3)*(x-3)*(x-3)*(y-1)*(y-1)*2*x*y, {x, -0.1, 4.4}, {y, -0.2, 1.5}, PlotRange -> {-3, 3}, Boxed -> False, Axes -> False, ColorFunction -> "SolarColors"]
輸入變數,一個可以畫成曲線,二個可以畫成曲面,三個就只能用空氣濃度來呈現輸出數值了,四個以上只能用幻想的。
輸出變數,一個容易作圖,兩個以上此處不介紹。
容易計算的函數類型
linear function:狹義線性函數。變數的加法、減法、倍率所組成。特色是可以改寫成矩陣形式。
例如f(x) = 2x、f(x,y) = 2x + y。
又例如f(x, y) = 2(x - y) + 3(x + 2y)。
linear function:一次函數。變數暨常數的加法、減法、倍率所組成。可以想成是狹義線性函數又位移,不必穿過原點。
例如f(x) = 2x + 1、f(x,y) = 2x + y - 3。
又例如f(x, y) = 5((x - 1) - (3x + 2y) + 5⋅3) - 2。
polynomial function:多項式函數。變數暨常數的加法、減法、乘法所組成。
例如f(x) = 3x² + 2x + 1、f(x,y) = 3x² + 2y² + xy + y - 3。
又例如f(x, y) = y((x - 1) ⋅ (3x + 2y) + 5⋅3) - 2。
function運算
function運算(主角是數值)
noun verb ------ -------------- ----------- 求值 evalutation evaluate 求解 resolution resolve 求根 root finding find root 最佳化 optimization optimize 內插 interpolation interpolate 迴歸 regression regress 近似 approximation approximate
求值、求解
求值:已知輸入、求得輸出。
求解:已知輸出、求得輸入。
種什麼因,得什麼果 ---> 函數、方程式 結果是什麼 ---> 求值 原因是什麼 ---> 求解
求根、求極值
求根:輸出是零的地方,求得輸入與輸出。
求極值(最佳化):輸出最大、最小的地方,求得輸入與輸出。
事物的詳細情況 ---> 輸入 事物的好壞優劣 ---> 輸出 沒有效果的情況 ---> 求根 效果最好或最差的情況 ---> 求極值(最佳化)
內插、迴歸
內插:已知一部分的輸入與輸出,求得函數。
迴歸:已知一部分的輸入與輸出,求得差不多的函數。
觀察世間萬物之關聯 ---> 一部分的輸入與輸出 找出前因後果 ---> 內插、迴歸 進而預測因果 ---> 內插、迴歸,之後再求值、求解、……
近似
近似:已知函數,求得差不多的函數。
長篇大論的前因後果 ---> 函數 言簡意賅的前因後果 ---> 近似
function運算
function運算(主角是函數)
■ logic operation (noun) operation (verb) result (noun) ----- -------------------- ------------------ ------------------ ( ) evaluation 求值 evaluate 求值 value 值 = substitution 代入 substitute 代入 expression 式 ∘ composition 複合 compose 複合 composite function 複合函數 ⁻¹ inversion 反演 inverse 反演 inverse function 反函數 ■ arithmetic ----- -------------------- ------------------ ------------------ + addition 加法 add 加 sum 和 - subtraction 減法 subtract 減 difference 差 ⋅ multiplication 乘法 multiply 乘 product 積 / division 除法 divide 除 quotient 商 ■ calculus ----- -------------------- ------------------ ------------------ d/dx differentiation 微分 differentiate 微 derivative 導數 ∫ dx integration 積分 integrate 積 integral 積分 ■ analysis ----- -------------------- ------------------ ------------------ ⟪ , ⟫ dot product 點積 ∗ convolution 卷積 ‖ ‖ norm 範數 ■ comparison ----- -------------------- ------------------ ------------------ = equal than 等於 true/false 真/假 > greater than 大於 true/false 真/假 < less than 小於 true/false 真/假 ■ optimization ----- -------------------- ------------------ ------------------ max maximization 最大化 maximize 最大化 maximum 最大值 min minimization 最小化 minimize 最小化 minimum 最小值 sup supremum 最小上界 inf infimum 最大下界
求值
求值:給定輸入數值,計算輸出數值。
sin x cos y f(x, y) = ————— + ————— y x | | x = 1 | y = 0.5 ↓ sin 1 cos 0.5 f(1, 0.5) = ————— + ——————— = 2.56 0.5 1
代入
代入:輸入變數替換為其他變數,得到新函數。
sin x cos y f(x, y) = ————— + ————— y x | | x = s+2 | y = t/2 ↓ sin(s+2) cos(t/2) g(s, t) = ———————— + ———————— t/2 s+2
複合
複合:如果經常接連求值,那麼可以預先把函數複合在一起,得到複合函數,節省計算時間!
兩個函數 f(x) = x² + x + 1 g(x) = -x + 2 輸入數值是1的時候,計算先通過g函數、再通過f函數的輸出數值 g(1) = -1 + 2 = 1 f(g(1)) = f(1) = 1² + 1 + 1 = 3 輸入數值是2的時候,計算先通過g函數、再通過f函數的輸出數值 g(2) = -2 + 2 = 0 f(g(2)) = f(0) = 0² + 0 + 1 = 1
如果預先讓函數複合 (f ∘ g)(x) = f(g(x)) = (-x + 2)² + (-x + 2) + 1 = x² - 5x + 7 那麼就可以節省計算時間 (f ∘ g)(1) = 1² - 5 + 7 = 3 (f ∘ g)(2) = 2² - 10 + 7 = 1
反演
反演:如果經常求解,那麼可以預先把函數反演,得到反函數,節省計算時間!
一個函數 f(x) = log₂(x - 2) 輸出數值是1的時候,嘗試求得輸入x f(x) = log₂(x - 2) = 1 x - 2 = pow₂(1) x - 2 = 2¹ x - 2 = 2 x = 2 + 2 x = 4
如果預先讓函數反演 f⁻¹(x) = 2ˣ + 2 那麼就可以節省計算時間 f⁻¹(1) = 2¹ + 2 = 4
加減乘除
加減乘除:如果經常要把兩個函數的輸出加在一起,那麼可以預先把兩個函數加在一起,得到新函數,節省計算時間!
加減乘除概念相仿,其餘運算就不多提了。
兩個函數 f(x) = x² + x + 1 g(x) = -x + 2 輸入數值是1的時候,計算所有函數輸出數值的總和 f(1) = 1² + 1 + 1 = 3 g(1) = -1 + 2 = 1 f(1) + g(1) = 3 + 1 = 4 輸入數值是2的時候,計算所有函數輸出數值的總和 f(2) = 2² + 2 + 1 = 7 g(2) = -2 + 2 = 0 f(2) + g(2) = 7 + 0 = 7
如果預先讓函數相加 (f + g)(x) = f(x) + g(x) = (x² + x + 1) + (-x + 2) = x² + 3 那麼就可以節省計算時間 (f + g)(1) = 1² + 3 = 4 (f + g)(2) = 2² + 3 = 7
微分、積分
微分:輸出差距除以輸入差距。曲線的斜率。
積分:輸出加總乘以輸入差距。曲線下的面積。
點積、卷積
【不知道怎麼畫成圖片】
點積:兩個函數相乘、積分(負無限大到正無限大)。
卷積:很多次點積,其中一個函數左右翻面、一直位移。
範數
範數:輸出的大小。如果輸出變數有很多個,那麼範數有多種設定方式,例如向量長度(平方和開根號)(自點積開根號)。
等於、大於、小於
等於:兩個曲線,處處一樣高。
大於:第一個曲線,處處都較高。
小於:第一個曲線,處處都較低。
如果輸出變數有很多個,那麼可以用範數比大小。
最大值、最小值
最大值:一個曲線的最高處。最大的輸出。
最小值:一個曲線的最低處。最小的輸出。
最小上界、最大下界
最小上界:多個曲線的最大值。
最大下界:多個曲線的最小值。
延伸閱讀:最小值min與最大下界inf
數學家給了嚴格定義。兩者都是「一群東西的最小者」,東西可以是整數、實數、函數、……,東西數量可以是有限、無限,東西範圍可以是有界、無界。兩者差別在於min 不含趨近,inf包含趨近。
範例:實數範圍大於零小於十(0,10),min不存在(永遠可以找到一個更接近0的實數),inf則是0。
範例:實數範圍從大於等於零小於等於十[0,10],min是0,inf也是0。
範例:https://math.stackexchange.com/questions/1106225/
計算學家有著另類用法。min是一群數值的最小數值,inf是一群函數的最大下界函數。min輸出數值,inf輸出函數。
範例:x* = minₓ f(x)是指一堆數字f(0)、f(1)、f(2)、……的最小數值。
範例:g(y) = infₓ f(x,y)是一堆一維函數f(0,y)、f(1,y)、f(2,y)、……的最大下界函數。
計算學只討論確切數字,於是這兩個範例的min和inf其實都是相等的。既然兩者互通,於是將min用在數值、inf用在函數,以增加資訊含量。