# 三角函数
# 简介
三角函数是一组关于角度的函数,几何上,
常见的三角函数包括正弦(
# 定义
# 几何定义
直角三角形中的定义:
正弦
余弦
正切
余切
正割
余割
# 勾股定理及推论
勾股定理是所有人都非常熟悉的定理,其实也是整个初高中阶段极少有的以人名(毕达哥拉斯)命名的定理,足见其重要性。勾股定理的证明方法很多,这里不展开。勾股定理有 400 多种证明方法,有兴趣的可以看看李永乐老师的视频 (opens new window)。需要注意的是我们用到的很多推论本身来自勾股定理,要避免循环论证。
(P.S. 多提一嘴,目前没并没有可靠的历史记录了中国人证明了勾股定理,其实古代很多文明都发现了一些勾股数,但可考的给出严格逻辑证明的第一人是古希腊的毕达哥拉斯,其弟子还因此发现了无理数
根据勾股定义,我们可以推导出,有兴趣的朋友可以留言 (opens new window) 证明一下这个推论。
通过此公式,我们可以用
# 常见三角函数的值域、周期与图象
# 正弦
它的定义域是整个实数集,值域是
# 余弦
它的定义域是整个实数集,值域是
# 正切
它的定义域是
# 数学求值
中学里,我们学了很多和三角函数有关的公式,如和差角公式、倍角公式、半角公式、和差化积公式、万能公式等。然后将 0 30 45 60 和 90 度几个特殊角扩展到更多的特殊角,但并没有给出计算任意角三角函数的方法。公式太多,不放出来了,传送门。笔者认为,这些公式除了考试增加算术技巧外,并没有太多的用处。
# 通用编程实现
我们其实只要实现
这个式子是无法直接编程的,因为无穷项,只能通过泰勒展开近似求前 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)
# 试一试
移动鼠标,不同的角(以弧度或度数为单位)对 正弦、余弦和正切的影响。