数与图(9)——幂函数曲线
在《数与图(3)》中我们分别绘制了一次函数、二次函数及三次函数的曲线,本篇文章中,我们将绘制6次函数的曲线,函数的表达式为
y = (x+3.6)*(x+2.5)*(x+1)*(x-0.5)*(x-2)*(x-3.5)
这正是那个在前几篇文章中反复讨论的多项式,现在将它写成函数的形式,以便绘制它的曲线。
在开始绘制六次函数曲线之前,我们先简单回顾一下绘制曲线的方法,《数与图(3)》中“绘制曲线”过程的代码如图1所示:
图1 在画布上绘制函数曲线的过程
在上面的代码中,我们要理解的重要内容有三点:
x的取值范围由坐标轴上x的最小值和最大值决定,x的取值间隔为十分之一辅间距。
根据给定的x值,由函数表达式求出函数的y值,其中的函数表达式是需要替换的部分,本文中要替换成六次函数。
根据给定的x和求得的y绘制函数曲线,注意数学坐标和画布坐标之间的变换,除了缩放比例外,还有y轴的取相反数。
有了以上准备,下面来确定六次函数的绘图区间,我们人为地将其设为[-10,10],即:-10≤x≤10,而x坐标的主间距为2,辅间距为0.4。根据x坐标来预测y坐标的最大值。
回到《数与图(8)》的项目中,利用循环语句求六次函数在[-10,10]之间间隔为1时的函数值列表,代码及计算结果如图2所示。从结果中可以看出,函数值不在一个数量级内,y的最大值接近百万。在这种情况下,如果将y的最小值设为0,最大值设为100万,那么每个像素表示的长度是1,000,000/600≈1667,如此一来,那些小于2000的y值就会匍匐在x轴上,无法展示出它们的差异。我们不妨来画画看。
图2 观察x在[10,10]内函数值y的取值
回到《数与图(8)》的项目中,将“多项式求积”过程放入代码背包,然后打开《数与图(3)》的项目,将求积过程从背包中取出,然后将图1中的“y坐标”过程替换成“多项式求积”过程,代码如图3所示。
图3 用“多项式求积”过程替换“y坐标”过程
单独执行“绘制曲线”过程,所得结果如图4所示。
图4 绘制六次函数曲线的测试结果
从曲线图中可以看到,当-5<x<5时,函数值几乎为零,而当x<-5或x>5时,函数值激剧增大。为了让曲线在绘图区域内展示出明显的变化趋势,我们需要引入一个修正函数:e-x*x/4,用这个函数来乘以幂函数,即:
y=(x+3.6)*(x+2.5)*(x+1)*(x-0.5)*(x-2)*(x-3.5)*e-x*x/4
引入的指数函数,当x趋近于0时,该函数值趋近于1,随着x的增大,函数值快速地趋近于0,这种特性可以让急剧增大的幂函数快速衰减,因此使函数曲线变得平缓。
下面修改“多项式求积”过程,将指数函数引入到函数表达式中,代码如图5所示。
图5 将指数函数引入到“多项式求积”过程里
再次单独运行“绘制曲线”过程,测试结果如图6所示。
图6 引入指数函数之后的函数曲线
以上我们绘制了经过指数函数修正的幂函数曲线,你有没有从中获得什么启示呢?经过修正的幂函数,在0附近表现出振荡的特性,这个图形是否有点像人的心电图曲线呢?如果是,那么心电图曲线是否也可以分解为某种形式的多项式呢?假如可以,那么多项式中的每一项是否可以与人的健康状况建立某种联系呢?这些问题是没有答案的,至少我还没有找到答案,就留给读者思考吧,或许某个年轻人在未来的某个时刻会揭开这个谜题。