# 三角函数

# 简介

三角函数是一组关于角度的函数,几何上,度的三角函数,可以表示为直接三角形的边长关系。扩展到更大的角度,也可以等价地用单位圆上有关的各种线段的长度来定义。三角函数在研究三角形和圆等几何形状的性质时有重要作用,也是研究振动、波、天体运动以及各种周期性现象的基础数学工具。在数学分析中,三角函数也被定义为无穷级数或特定微分方程的解,允许它们的取值扩展到任意实数值,甚至是复数值。

常见的三角函数包括正弦() 余弦() 及正切(),其余的还有如余切()、正割()、余割()、正矢(versin)、半正矢(haversin)等其他的三角函数。其实最重要的只需记住正弦和余弦,其它函数都可以通过这两个函数导出。正切由于直角坐标系中只与 水平垂直线段有关,所以会单拎出来。

# 定义

# 几何定义

直角三角形中的定义:

正弦

余弦

正切

余切

正割

余割

# 勾股定理及推论

勾股定理是所有人都非常熟悉的定理,其实也是整个初高中阶段极少有的以人名(毕达哥拉斯)命名的定理,足见其重要性。勾股定理的证明方法很多,这里不展开。勾股定理有 400 多种证明方法,有兴趣的可以看看李永乐老师的视频 (opens new window)。需要注意的是我们用到的很多推论本身来自勾股定理,要避免循环论证。

(P.S. 多提一嘴,目前没并没有可靠的历史记录了中国人证明了勾股定理,其实古代很多文明都发现了一些勾股数,但可考的给出严格逻辑证明的第一人是古希腊的毕达哥拉斯,其弟子还因此发现了无理数。即使不很可靠的《周髀算经》成书年代也比毕达哥拉斯晚 700-800 年。)

根据勾股定义,我们可以推导出,有兴趣的朋友可以留言 (opens new window) 证明一下这个推论。

通过此公式,我们可以用 来计算

# 常见三角函数的值域、周期与图象

# 正弦

它的定义域是整个实数集,值域是。它是周期函数,其最小正周期为。在自变量为为整数)时,该函数有极大值1;在自变量为时,该函数有极小值-1。正弦函数是奇函数,其图像关于原点对称。

sin

# 余弦

它的定义域是整个实数集,值域是。它是周期函数,其最小正周期为 。在自变量为为整数)时,该函数有极大值1;在自变量为时,该函数有极小值-1。余弦函数是偶函数,其图像关于y轴对称。

cos

# 正切

它的定义域是,值域是整个实数集。渐近线为它是周期函数,其最小正周期为 弦函数是奇函数,其图像关于原点对称。

cos

# 数学求值

中学里,我们学了很多和三角函数有关的公式,如和差角公式、倍角公式、半角公式、和差化积公式、万能公式等。然后将 0 30 45 60 和 90 度几个特殊角扩展到更多的特殊角,但并没有给出计算任意角三角函数的方法。公式太多,不放出来了,传送门。笔者认为,这些公式除了考试增加算术技巧外,并没有太多的用处。

# 通用编程实现

我们其实只要实现 ,其他三角函数都可以简单通过公式算出来。但如果用计算机从头实现一 sin 函数,还是有一定难度的。首先要借助 的级数定义推导:

这个式子是无法直接编程的,因为无穷项,只能通过泰勒展开近似求前 N 项和,计算有限步的的近似值。

另一个,根据欧拉公式 变形式

计算,这个需要你的编程语言支持复数,比如 Python,优点是复杂度 O(1)

# JS 实现

// 计算前 10 项展开式
function sin (x) {
  const max = 10
  const factorial = (n) => {
    if (n < 2) return 1
    return n * factorial(n - 1)
  }
  let sum = 0
  for (let n = 0; n < max; n++) {
    sum += ((-1) ** n) * (x ** (2 * n + 1)) / factorial(2 * n + 1)
  }
  return sum
}
console.log(sin(128 * (Math.PI/180))) // x 是弧度值,要把角度转成弧度
// 0.788010753606307

# Python 复数实现

import math
e = math.e
pi = math.pi
def sin (x):
  # j 是 Python 里的虚数单位,编程语言里习惯使用 j 而不是 i
  return (e **(1j * x) - e **(-1j * x)) / 2j 
print(sin(128 * pi/180))
(0.788010753606722+0j)

# 试一试

移动鼠标,不同的角(以弧度或度数为单位)对 正弦、余弦和正切的影响。