如果你也像我一样毕业多年,你是否还记得当年所学的数学中那些函数:幂,对数,指数,正弦,余弦,正切,余切,反正弦,反余弦,反正切,反余切,双曲正弦,双曲余弦,双曲正切,双曲余切,正割函数,余割函数,双曲正割,双曲正割.听这些名字让人觉得即熟悉又陌生吧.这里将展示出这些函数所生成的平面图形.你可能记得这些函数生成的是曲线,不过我这里给数据多加了一个维度,然后是以面的形式显示这些函数.怎么说这些函数的曲线样子总能通过百度或是维基上搜索到,而我这的图形可都是原创的.
相关软件参见:数学图形可视化工具
(1)幂函数
X的N次幂.
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;
}
![](https://i-blog.csdnimg.cn/blog_migrate/22c2799f418dffd37b6081b259be8b69.png)
上图为脚本所生成的图形,右下角有两个滑动块控件,在软件中按下键盘'P'会出现,用于设置当前选择的数值.图形上的红色曲线表示当前数值下的函数曲线.
(2)指数函数
它与幂函数很相似,表示N的X次幂
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之间,以防止图形过大.
![](https://i-blog.csdnimg.cn/blog_migrate/3ac04318edc26e00224ac1c9b2806ec4.png)
(3)对数函数
对数函数与指数函数相对应
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)
![](https://i-blog.csdnimg.cn/blog_migrate/dadf486483240540045bf1abd64dc012.png)
图中有一条红色曲线,一条绿线,按下键盘'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
![](https://i-blog.csdnimg.cn/blog_migrate/1f28c5747f380b01ec867a7aa5cbdfc7.png)
(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)
![](https://i-blog.csdnimg.cn/blog_migrate/12d1db2d8852b2cba700d282c366e1e5.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/cc32f4453d1efd83a85e2a0ddf8f156a.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/cc6a5de5a6cbda588deccfeaefc852d9.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/6718f0e48d6513d19850bf814f07b09c.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/662d5d853f63ad975309767fb84a77a4.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/3aebeff0d257a37ccb194fc4180b92b3.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/c59570dc5543ac255266c80d5a61af5c.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/876232ee2d44f86fdcd2c93fb40f0b64.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/85db6ff95c6d4a5472086f8dbab0a425.png)
vertices = D1:360 D2:100
u = from (-10) to (10) D1
v = from -10 to 10 D2
x = u
y = atan2(u, v)
![](https://i-blog.csdnimg.cn/blog_migrate/568dbd9011fbd4fb69f13ff050589da9.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/d0b6f2e73f327d40ce20d78a57e4bca8.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/c0ba6adc57587461076497ca5972dabb.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/348ddeb8569c7ac41b914281076a0b49.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/a5328a6e2493e7e7775e1d14fb7a8178.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/47e118b52c4578dd9fb6d52c1edcc079.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/7f22cd1ccea8025fbcd92d202769d338.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/50a03bebd45889e89627d6726673ac60.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/cafe503adaad171ba14793cb29d47d1a.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/ae15dfafb486231d9d119fbc3720e047.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/2db4923bd12fbed5199fa5191ac21fdd.png)
(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
![](https://i-blog.csdnimg.cn/blog_migrate/89622859f76d207ff38f78ac093213a7.png)