如果你也像我一樣畢業多年,你是否還記得當年所學的數學中那些函數:冪,對數,指數,正弦,余弦,正切,余切,反正弦,反余弦,反正切,反余切,雙曲正弦,雙曲余弦,雙曲正切,雙曲余切,正割函數,余割函數,雙曲正割,雙曲正割.聽這些名字讓人覺得即熟悉又陌生吧.這里將展示出這些函數所生成的平面圖形.你可能記得這些函數生成的是曲線,不過我這里給數據多加了一個維度,然后是以面的形式顯示這些函數.怎么說這些函數的曲線樣子總能通過百度或是維基上搜索到,而我這的圖形可都是原創的.
相關軟件參見:數學圖形可視化工具
(1)冪函數
X的N次冪.
vertices = D1:100 D2:100 u = from (-2) to (2) D1 v = from 0 to 4 D2 x = u y = v*pow_sign(u, v)
腳本代碼中X,N都為變量,兩個變量會生成一個二維數據,得到一個平面圖形.pow_sign是一個保留正負號的pow函數,其C++實現為:
static float yf_pow_sign(float a, float b) { float s = yf_sign(a); a = ::fabsf(a); if (a < FLT_EPSILON) { return 0.0f; } return ::powf(a, b)*s; }
上圖為腳本所生成的圖形,右下角有兩個滑動塊控件,在軟件中按下鍵盤'P'會出現,用於設置當前選擇的數值.圖形上的紅色曲線表示當前數值下的函數曲線.
(2)指數函數
它與冪函數很相似,表示N的X次冪
vertices = D1:100 D2:100 u = from (-10) to (10) D1 v = from 0.1 to 10 D2 x = u y = pow_sign(v, u) y = limit(y, -50, 50)
腳本中y = limit(y, -50, 50)表示將Y值限定在-50到50之間,以防止圖形過大.
(3)對數函數
對數函數與指數函數相對應
vertices = D1:100 D2:100 u = from 0.1 to 10 D1 v = from 1 to 10 D2 x = u y = log_ax(v, u) y = limit(y, -50, 50)
圖中有一條紅色曲線,一條綠線,按下鍵盤'8'會顯示在右上角的面板.其中會顯示兩線交點的數值信息
(4)log函數
vertices = D1:360 D2:100 u = from (0.001) to (10) D1 v = from 0 to 1 D2 x = u y = log(x)*v v = v*2
(5)pow 函數
vertices = D1:360 D2:100 u = from 0 to 1 D1 v = from 0.1 to 10 D2 s = 10 x = s*u y = s*pow(u, v)
(6)EXP
vertices = D1:360 D2:100 u = from (-4) to (4) D1 v = from 0 to 1 D2 x = u y = exp(x)*v v = v*2
(7)正弦
vertices = D1:360 D2:100 u = from (-2*PI) to (2*PI) D1 v = from 0 to 1 D2 x = u y = v*sin(u) u = u*5 v = v*2
(8)余弦
vertices = D1:360 D2:100 u = from (-2*PI) to (2*PI) D1 v = from 0 to 1 D2 x = u y = v*cos(u) u = u*5 v = v*2
(9)正切
vertices = D1:360 D2:100 u = from (-2*PI) to (2*PI) D1 v = from 0 to 1 D2 x = u y = tan(x)*v y = limit(y, -100, 100) u = u*5 v = v*5
(10)余切
vertices = D1:360 D2:100 u = from (-4*PI) to (4*PI) D1 v = from 0 to 1 D2 x = u y = cot(x)*v y = limit(y, -100, 100) u = u*5 v = v*5
(11)反正弦
vertices = D1:360 D2:100 u = from (-1) to (1) D1 v = from 0 to 1 D2 x = u y = asin(x)*v v = v*2
(12)反余弦
vertices = D1:360 D2:100 u = from (-1) to (1) D1 v = from 0 to 1 D2 x = u y = acos(x)*v v = v*2
(13)反正切
vertices = D1:360 D2:100 u = from (-10) to (10) D1 v = from 0 to 1 D2 x = u y = atan(x)*v v = v*2
vertices = D1:360 D2:100
u = from (-10) to (10) D1 v = from -10 to 10 D2 x = u y = atan2(u, v)
(14)反余切
vertices = D1:360 D2:100 u = from (-10) to (10) D1 v = from 0 to 1 D2 x = u y = acot(x)*v v = v*2
(15)雙曲正弦
vertices = D1:360 D2:100 u = from (-0.9*PI) to (0.9*PI) D1 v = from 0 to 1 D2 x = u y = sinh(x)*v u = u*5 v = v*5
(16)雙曲余弦
vertices = D1:360 D2:100 u = from (-0.9*PI) to (0.9*PI) D1 v = from -1 to 1 D2 x = u y = cosh(x)*v u = u*5 v = v*5
(17)雙曲正切
vertices = D1:360 D2:100 u = from (-0.9*PI) to (0.9*PI) D1 v = from -1 to 1 D2 x = u y = tanh(x)*v u = u*5 v = v*5
(18)雙曲余切
vertices = D1:360 D2:100 u = from (-2*PI) to (2*PI) D1 v = from 0 to 1 D2 x = u y = cth(x)*v y = limit(y, -100, 100) u = u*5 v = v*5
(19)正割函數
vertices = D1:360 D2:100 u = from (-2*PI) to (2*PI) D1 v = from 0 to 1 D2 x = u y = sec(x)*v y = limit(y, -100, 100) u = u*5 v = v*5
(20)余割函數
vertices = D1:360 D2:100 u = from (-2*PI) to (2*PI) D1 v = from 0 to 1 D2 x = u y = csc(x)*v y = limit(y, -100, 100) u = u*5 v = v*5
(21)雙曲正割
vertices = D1:360 D2:100 u = from (-PI) to (PI) D1 v = from -1 to 1 D2 x = u y = sch(x)*v y = limit(y, -100, 100) u = u*5 v = v*5
(22)雙曲余割
vertices = D1:360 D2:100 u = from (-PI) to (PI) D1 v = from -1 to 1 D2 x = u y = xh(x)*v y = limit(y, -100, 100) u = u*5 v = v*5
(23)反正割
vertices = D1:360 D2:100 u = from (-10) to (10) D1 v = from 0 to 1 D2 x = u y = asec(x)*v + PI/2*(1 - v) y = limit(y, -100, 100) u = u*5 v = v*5
(24)反余割
vertices = D1:360 D2:100 u = from (-10) to (10) D1 v = from 0 to 1 D2 x = u y = acsc(x)*v y = limit(y, -100, 100) u = u*5 v = v*5