数与图(21)——三角函数

在此前的《数与图》系列文章中,我们讨论最多的是由幂函数组成的多项式函数,包括函数的图像、求导数、求积分,甚至还利用二次函数完成了一个机器学习的案例。除此之外,我们还讨论了圆、椭圆及双曲线函数,并绘制了相应的图像。本文即将讨论的三角函数,与之前的各种函数最大的不同是,三角函数具有周期性。本文的目标是绘制正弦、余弦及正切函数的曲线,并讨论周期、振幅等概念。

三角函数的定义源自三角形,它体现了直角三角形中角与边之间的关系,如图1所示。

图1 三角函数的定义

想象图1中的斜边c从零度角开始逆时针旋转,当θ=0度时,a=0,b=c,因此sinθ=0,cosθ=1;随着θ增加,a逐渐增加,b逐渐减小,当θ=90度时,a=c,b=0,因此sinθ=1,cosθ=0;随着角度的继续增大,当θ=180度时,a=0,b=-c,因此sinθ=0,cosθ=-1;当θ=270度时,a=-c,b=0,因此sinθ=-1,cosθ=0;当θ旋转到360度时,斜边c重新回到0度,如此周而复始地旋转,角度不断增加,而sinθ和cosθ的值永远在-1到+1之间循环,这就是函数周期性的来历。对于sinθ及cosθ来说,它们的周期就是360度,而tanθ的周期则是180度。

角θ的度量可以用角度,也可以用弧度,角度与弧度之间的换算关系是

标准的正弦函数写作

其中A称为振幅,它决定了函数的最大值/最小值;ω称为角频率,它决定函数的周期,当ω=1时,函数的周期为2π(360°),当ω=2时,函数的周期为π(180°)。φ称为初相位,它决定函数图像在x轴上的平移量。

在App Inventor的内置块分组中,数学代码块里包含了正弦、余弦及正切块,它们接受的数值单位为角度,我们将分别使用这些块来计算函数值,并绘制函数图像。

一、正弦函数

为了绘制函数图像,需要确定自变量x及函数值y的取值范围。由于正弦、余弦函数的周期为360度,为了能够绘制两个周期的图像,x轴的最小值设为-400,最大值设为400;y值则取-4到4。将《数与图(20)》中的项目另存为“三角函数”,并重新设置绘图数据。重新命名项目中的按钮,并重新设置其显示文本属性。在屏幕下方添加两个水平布局组件,再分别向两个水平布局中添加三个标签、三个文本输入框(仅限数字),相关设置如图2所示。

图2 修改用户界面

下面开始编写程序。

1、声明全局变量

声明两个全局变量——颜色列表及颜色索引值,代码如图3所示。

图3 声明全局变量

2、创建过程

创建一个过程——求正余弦函数坐标列表,代码如图4所示。

图4 创建过程——求正余弦函数坐标列表

3、编写事件处理程序

编写正弦按钮的点击事件处理程序,代码如图5所示。

图5 正弦及余弦按钮的点击事件处理程序

4、测试

依次修改振幅、角频率及初相位,然后点击绘制正弦曲线,观察曲线的变化。测试结果如图6所示。

图6 程序的测试结果

图6中共有7条曲线,按照赤橙黄绿青蓝紫的顺序,它们依次表示下列函数

读者可以也可以自行测试,观察振幅、角频率及初相位对函数曲线的影响。

二、余弦函数

这里只需要编写余弦按钮的点击事件处理程序,其实它与正弦按钮的程序几乎完全相同,只差一个参数——余弦。此时应该创建一个过程,来避免代码的复制粘贴,最终的代码如图7所示。

图7 创建并调用过程——绘制正余弦曲线

测试结果如图8所示。

图8 绘制余弦曲线的结果

这次绘制了6条曲线,其中红色曲线的函数为y=cosx,蓝色曲线的函数为y=4cos(x-90),其他曲线请读者给出它们的函数表达式。

三、正切函数

与正弦、余弦函数不同的是,函数y=tanx的周期为180°,而且当x趋近于±90°时,函数值趋近于无穷大:当x从±90°的左侧趋近时,tanx趋近于正无穷,当x从±90°的右侧趋近时,tanx的值趋近于负无穷。基于上述特点,无法连续绘制各个周期中tanx的图像,因此需要单独绘制每个周期中的图像。

创建一个有返回值过程——y不出界,再创建一个无返回值过程——求正切函数坐标列表,代码如图9所示。

图9 创建两个过程

然后编写正切按钮的点击事件处理程序,代码如图10所示。

图10 正切按钮的点击事件处理程序

在测试之前,需要修改用户界面上的绘图参数,将y的最大值改为10,最小值改为-10,主间距为2,辅间距为0.4,然后进行测试。测试结果如图11所示。

图11绘制正切曲线的测试结果

以上我们用程序绘制了三种三角函数的曲线,其中的正弦、余弦曲线呈现出波的形式,这种简单而优美的曲线,恰好与物理学中的简谐振动相对应,例如钟摆的运动。

(0)

相关推荐

  • 三角函数,Excel中也能画?

    三角函数,这个学生时代的Buff,大家还记得当初徒手画函数图像时的情景吗? 先根据三角函数,计算出多组不同的(x,y)值,然后在坐标轴上找到每组(x,y)值对应的点,最后用曲线连接,从而得到最终的图像 ...

  • UG NX阿基米德螺旋线建模方法(表达式)

    此曲线为阿基米德螺线,涉及到阿基米德螺线的公式:R=a*θ还有就是三角函数的正弦,余弦,正切,余切,的公式.a为系数,算法是(大径-小径)/旋转的度数.(由于涉及公司数据所以本题所有参数均... 此曲 ...

  • 【摄影·小品】画中人PK野花香(下)(图21幅)

         画中人惟妙惟肖.栩栩如生,不需与谁PK,本身就是佼佼者.老李却突发奇想,竟然让画中人与野花PK...      野花并不奇葩,只是透着一股乡野的土气,却令许多高傲的牡丹.芍药.菊花等一众名贵 ...

  • CSCO2021肿瘤思维导图21期 | 恶性血液病诊疗指南(七)

    作品为系列作品,后续会不断更新和发布, 请点击和关注上面公众号第一时间获得最新信息! 20版思维导图制作人 21版思维导图更新 肿瘤思维导图-恶性血液病 Tumor Mindmap -Hematolo ...

  • 数与图(1)

    App Inventor的画布组件,相当于一个平面直角坐标系,画布上的任何一点都可以用一对坐标(x,y)加以描述,而画布具有画笔的功能,可以在指定位置绘制点.线.圆等基本图形,这就使得开发者可以用程序 ...

  • 数与图(2)

    在上一篇文章『数与图(1)』中我们遗留下一个问题,当坐标轴的原点不在画布范围内时,程序会报错,现在我们就来解决这个问题. "原点不在画布范围内"可能有三种不同的情况: (1)x轴原 ...

  • 数与图(2)修正版

    说明:此前发送的『数与图(2)』缺少图1,现将图1补上,重新发送,给您带来的不便,请多包涵. 在上一篇文章『数与图(1)』中我们遗留下一个问题,当坐标轴的原点不在画布范围内时,程序会报错,现在我们就来 ...

  • 数与图(3)

    在前两篇文章(数与图(1).数与图(2))中,我们完成了对坐标系的绘制,现在可以在坐标系中绘制函数图像了. 在高中数学课本里,函数被表示为y=f(x),在函数的定义域内,每一个x值,都有唯一的y值与其 ...

  • 数与图(4)——多项式表达式

    在数与图(3)中,我们绘制了一次函数.二次函数及三次函数的图形,接下来我们希望绘制更为复杂的函数图形,如下式: 通过改变系数的值,来观察系数对曲线形状的影响.这项任务涉及到大量的运算,对于人类来说,即 ...

  • 数与图(5)——合并同类项

    在上一篇文章<数与图(4)>中,我们拼写出多项式表达式,其难点在于如何处理众多可能的条件分支.本篇文章继续讨论与多项式有关的代数运算--合并同类项. 拥有初中数学基础的读者都知道合并同类项 ...

  • 数与图(6)——多项式乘法

    在上一篇文章<数与图(5)>中,我们实现了合并同类项操作,而合并同类项是多项式乘法的基础,本文在此基础上,用程序实现多项式的乘法运算. 首先将上一篇文章的项目"合并同类项&quo ...