三角函数在python和numpy中实现的不够全面,主要包括cos, cosh, sin sinh, tan, tanh三角函数和arccos, arccosh, arcsin, arcsinh, arctan, arctanh反三角函数,cot,sec,csc,arccot,arcsec,arccsc均为提供,不过可以通过其他函数进行组合或变形得以实现。

三角函数是基本初等函数之一,是以角度(数学上最常用弧度制,下同)为自变量,角度对应任意角终边与单位圆交点坐标或其比值为因变量的函数。也可以等价地用与单位圆有关的各种线段的长度来定义。三角函数在研究三角形和圆等几何形状的性质时有重要作用,也是研究周期性现象的基础数学工具。在数学分析中,三角函数也被定义为无穷级数或特定微分方程的解,允许它们的取值扩展到任意实数值,甚至是复数值。

反三角函数是一种基本初等函数。它是反正弦arcsin x,反余弦arccos x,反正切arctan x,反余切arccot x,反正割arcsec x,反余割arccsc x这些函数的统称,各自表示其正弦、余弦、正切、余切 ,正割,余割为x的角

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#                     _ooOoo_
#                   o8888888o
#                    88" . "88
#                 ( | -  _  - | )
#                     O\ = /O
#                 ____/`---'\____
#                  .' \\| |// `.
#                 / \\|||:|||// \
#               / _|||||-:- |||||- \
#                | | \\\ - /// | |
#              | \_| ''\---/'' | _/ |
#               \ .-\__ `-` ___/-. /
#            ___`. .' /--.--\ `. . __
#         ."" '< `.___\_<|>_/___.' >'"".
#       | | : `- \`.;`\  _ /`;.`/ - ` : | |
#          \ \ `-. \_ __\ /__ _/ .-` / /
#      ==`-.____`-.___\_____/___.-`____.-'==
#                     `=---='
'''
@Project :pythonalgorithms
@File :trigonometric.py
@Author :不胜人生一场醉@Date :2021/7/26 23:28
'''
import matplotlib.pyplot as plt
import numpy as np
import math
import mpl_toolkits.axisartist as axisartist  # 导入坐标轴加工模块
# 三角函数是基本初等函数之一,是以角度(数学上最常用弧度制,下同)为自变量,角度对应任意角终边与单位圆交点坐标或其比值为因变量的函数。
# 也可以等价地用与单位圆有关的各种线段的长度来定义。三角函数在研究三角形和圆等几何形状的性质时有重要作用,
# 也是研究周期性现象的基础数学工具。
# 在数学分析中,三角函数也被定义为无穷级数或特定微分方程的解,允许它们的取值扩展到任意实数值,甚至是复数值。
# 正弦函数 :y =sin x
# 正弦(sine),数学术语,在直角三角形中,任意一锐角∠A的对边与斜边的比叫做∠A的正弦,记作sinA(由英语sine一词简写得来),即sinA=∠A的对边/斜边。
# 余弦函数 :y =cos x
# 余弦(余弦函数)。在Rt△ABC(直角三角形)中,∠C=90°(如概述图所示),∠A的余弦是它的邻边比三角形的斜边,即cosA=b/c,也可写为cosa=AC/AB。余弦函数:f(x)=cosx(x∈R)
# 平方和关系
# (sinα)^2 +(cosα)^2=1
# 积的关系
# sinα = tanα × cosα(即sinα / cosα = tanα )
# cosα = cotα × sinα (即cosα / sinα = cotα)
# tanα = sinα × secα (即 tanα / sinα = secα)
# 倒数关系
# tanα × cotα = 1
# sinα × cscα = 1
# cosα × secα = 1
# 商的关系
# sinα / cosα = tanα = secα / cscα
# 和角公式
# sin ( α ± β ) = sinα · cosβ ± cosα · sinβ
# sin ( α + β + γ ) = sinα · cosβ · cosγ + cosα · sinβ · cosγ + cosα · cosβ · sinγ - sinα · sinβ · sinγ
# cos ( α ± β ) = cosα cosβ ∓ sinβ sinα
# tan ( α ± β ) = ( tanα ± tanβ ) / ( 1 ∓ tanα tanβ )
# 倍角半角公式
# sin ( 2α ) = 2sinα · cosα [1]
# sin ( 3α ) = 3sinα - 4sin & sup3 ; ( α ) = 4sinα · sin ( 60 + α ) sin ( 60 - α )
# sin ( α / 2 ) = ± √( ( 1 - cosα ) / 2)
# 级数展开
# sin x = x - x3 / 3! + x5 / 5! - ... ( - 1 ) k - 1 * x 2 k - 1 / ( 2k - 1 ) ! + ... ( - ∞ < x < ∞ )
# 导数
# ( sinx ) ' = cosx
# ( cosx ) ' = ﹣ sinxif __name__ == "__main__":sincosfunction()tanctnfunction()seccscfunction()arcsincosfunction()arccscfunction()
def sincosfunction():plt.figure(figsize=(10, 5))ax = plt.gca()  # 通过gca:get current axis得到当前轴plt.rcParams['font.sans-serif'] = ['SimHei']  # 绘图中文plt.rcParams['axes.unicode_minus'] = False  # 绘图负号x = np.linspace(-np.pi*2, np.pi*2, 200)y = np.sin(x)label = 'np.sin(x)'plt.plot(x, y, label=label)y = np.cos(x)label = 'np.cos(x)'plt.plot(x, y, label=label)y = np.power(np.sin(x),2)label = 'np.sin(x)^2'plt.plot(x, y, label=label)y = np.power(np.cos(x),2)label = 'np.cos(x)^2'plt.plot(x, y, label=label)y = np.power(np.cos(x), 2)+np.power(np.sin(x),2)label = 'np.sin(x)^2+np.cos(x)^2'plt.plot(x, y, label=label)# 设置图片的右边框和上边框为不显示ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')# 挪动x,y轴的位置,也就是图片下边框和左边框的位置# data表示通过值来设置x轴的位置,将x轴绑定在y=0的位置ax.spines['bottom'].set_position(('data', 0))# axes表示以百分比的形式设置轴的位置,即将y轴绑定在x轴50%的位置# ax.spines['left'].set_position(('axes', 0.5))ax.spines['left'].set_position(('data', 0))plt.title("sin&cos三角指数")plt.legend(loc='upper right')plt.show()

# 正切函数 :y =tan x
# 余切函数 :y =cot x
def tanctnfunction():#np.tan()plt.figure(figsize=(10, 8))plt.subplot(1, 2, 1)ax = plt.gca()  # 通过gca:get current axis得到当前轴plt.rcParams['font.sans-serif'] = ['SimHei']  # 绘图中文plt.rcParams['axes.unicode_minus'] = False  # 绘图负号x = np.append(np.linspace(-np.pi*3/2+0.01, -np.pi/2-0.01, 120),np.linspace(-np.pi/2+0.01, np.pi/2-0.01, 120))x = np.append(x,np.linspace(np.pi/2+0.01, np.pi*3/2-0.01, 120))y = np.tan(x)label = 'np.tan(x)'plt.plot(x, y, label=label)# 设置图片的右边框和上边框为不显示ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')# 挪动x,y轴的位置,也就是图片下边框和左边框的位置# data表示通过值来设置x轴的位置,将x轴绑定在y=0的位置ax.spines['bottom'].set_position(('data', 0))# axes表示以百分比的形式设置轴的位置,即将y轴绑定在x轴50%的位置# ax.spines['left'].set_position(('axes', 0.5))ax.spines['left'].set_position(('data', 0))plt.title("tan三角指数")plt.legend(loc='upper right')plt.subplot(1, 2, 2)ax = plt.gca()  # 通过gca:get current axis得到当前轴plt.rcParams['font.sans-serif'] = ['SimHei']  # 绘图中文plt.rcParams['axes.unicode_minus'] = False  # 绘图负号x = np.append(np.linspace(-np.pi+ 0.01, - 0.01, 120),np.linspace( 0.01, np.pi - 0.01, 120))y = 1/np.tan(x)label = 'np.ctn(x)'plt.plot(x, y, label=label)# 设置图片的右边框和上边框为不显示ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')# 挪动x,y轴的位置,也就是图片下边框和左边框的位置# data表示通过值来设置x轴的位置,将x轴绑定在y=0的位置ax.spines['bottom'].set_position(('data', 0))# axes表示以百分比的形式设置轴的位置,即将y轴绑定在x轴50%的位置ax.spines['left'].set_position(('axes', 0.5))#ax.spines['left'].set_position(('data', 0))plt.title("ctan三角指数")plt.legend(loc='upper right')plt.show()

# 正割函数 :y =sec x = 1/cos(x)
# 余割函数 :y =csc x = 1/sin(x)
def seccscfunction():plt.figure(figsize=(10, 5))ax = plt.gca()  # 通过gca:get current axis得到当前轴plt.rcParams['font.sans-serif'] = ['SimHei']  # 绘图中文plt.rcParams['axes.unicode_minus'] = False  # 绘图负号#x = np.linspace(-np.pi*2, np.pi*2, 200)x = np.append(np.linspace(-np.pi * 3 / 2 + 0.01, -np.pi - 0.01, 120),np.linspace(-np.pi + 0.01, -np.pi / 2 - 0.01, 120))x = np.append(x, np.linspace(-np.pi / 2 + 0.01,  - 0.01, 120))x = np.append(x, np.linspace(0.01, np.pi  / 2 - 0.01, 120))x = np.append(x, np.linspace(np.pi / 2 + 0.01, np.pi  - 0.01, 120))x = np.append(x, np.linspace(np.pi + 0.01, np.pi * 3 / 2 - 0.01, 120))y = 1/np.sin(x)label = 'np.csc(x)'plt.plot(x, y, label=label)y = 1/np.cos(x)label = 'np.sec(x)'plt.plot(x, y, label=label)# 设置图片的右边框和上边框为不显示ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')# 挪动x,y轴的位置,也就是图片下边框和左边框的位置# data表示通过值来设置x轴的位置,将x轴绑定在y=0的位置ax.spines['bottom'].set_position(('data', 0))# axes表示以百分比的形式设置轴的位置,即将y轴绑定在x轴50%的位置# ax.spines['left'].set_position(('axes', 0.5))ax.spines['left'].set_position(('data', 0))plt.title("csc&sec三角指数")plt.legend(loc='upper right')plt.show()

ef arcsincosfunction():plt.figure(figsize=(5, 10))ax = plt.gca()  # 通过gca:get current axis得到当前轴plt.rcParams['font.sans-serif'] = ['SimHei']  # 绘图中文plt.rcParams['axes.unicode_minus'] = False  # 绘图负号x = np.linspace(-1, 1, 200)y = np.arcsin(x)label = 'np.arcsin(x)'plt.plot(x, y, label=label)y = np.arccos(x)label = 'np.arccos(x)'plt.plot(x, y, label=label)# 设置图片的右边框和上边框为不显示ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')# 挪动x,y轴的位置,也就是图片下边框和左边框的位置# data表示通过值来设置x轴的位置,将x轴绑定在y=0的位置ax.spines['bottom'].set_position(('data', 0))# axes表示以百分比的形式设置轴的位置,即将y轴绑定在x轴50%的位置# ax.spines['left'].set_position(('axes', 0.5))ax.spines['left'].set_position(('data', 0))plt.title("arcsin&arccos三角指数")plt.legend(loc='upper right')plt.show()

# 反正切函数
#  正切函数y=tan x在(-π/2,π/2)上的反函数,叫做反正切函数。记作arctanx,表示一个正切值为x的角,该角的范围在(-π/2,π/2)区间内。
#  定义域R,值域(-π/2,π/2)。
#   numpy.arctan()
# 反余切函数
#  余切函数y=cot x在(0,π)上的反函数,叫做反余切函数。记作arccotx,表示一个余切值为x的角,该角的范围在(0,π)区间内。
#  定义域R,值域(0,π)。
# 反正割函数
#   正割函数 :y =sec x = 1/cos(x)
#  正割函数y=sec x在[0,π/2)U(π/2,π]上的反函数,叫做反正割函数。记作arcsecx,表示一个正割值为x的角,该角的范围在[0,π/2)U(π/2,π]区间内。
#  定义域(-∞,-1]U[1,+∞),值域[0,π/2)U(π/2,π]。
# 反余割函数
#   余割函数 :y =csc x = 1/sin(x)
#  余割函数y=csc x在[-π/2,0)U(0,π/2]上的反函数,叫做反余割函数。记作arccscx,表示一个余割值为x的角,该角的范围在[-π/2,0)U(0,π/2]区间内。
#  定义域(-∞,-1]U[1,+∞),值域[-π/2,0)U(0,π/2]。
def arccscfunction():plt.figure(figsize=(10, 5))ax = plt.gca()  # 通过gca:get current axis得到当前轴plt.rcParams['font.sans-serif'] = ['SimHei']  # 绘图中文plt.rcParams['axes.unicode_minus'] = False  # 绘图负号x = np.append(np.linspace(0.01, np.pi / 2 - 0.01, 120),np.linspace(np.pi/2+0.01, np.pi  - 0.01, 120))y = 1/np.cos(x)# 正割函数 sec(x)=1/cos(x)# 反正割函数 颠倒x,y值即可label = 'np.arcsecx(x)'plt.plot(y, x, label=label)# 设置图片的右边框和上边框为不显示ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')# 挪动x,y轴的位置,也就是图片下边框和左边框的位置# data表示通过值来设置x轴的位置,将x轴绑定在y=0的位置ax.spines['bottom'].set_position(('data', 0))# axes表示以百分比的形式设置轴的位置,即将y轴绑定在x轴50%的位置# ax.spines['left'].set_position(('axes', 0.5))ax.spines['left'].set_position(('data', 0))plt.title("arcsin&arccos三角指数")plt.legend(loc='upper right')plt.show()

原创不易,转载请注明!请多多关注,谢谢!

python实现之初等函数三——三角函数相关推荐

  1. 阶的估计I 无穷小量与强函数2 Taylor公式 基本初等函数与三角函数的阶

    阶的估计I 无穷小量与强函数2 Taylor公式 基本初等函数与三角函数的阶 这一讲介绍Taylor公式在阶的估计中的应用,并基于Taylor公式给出一些常用函数的阶的估计. 定理1.2 Taylor ...

  2. 使用python绘制基本初等函数

    文章目录 使用python绘制基本初等函数 幂函数 指数函数 对数函数 三角函数 反三角函数 使用python绘制基本初等函数 基本初等函数{幂函数:xa,指数函数:ax(a>0,a≠1)对数函 ...

  3. python笔记_第三周

    python笔记_第三周 第十天 回调函数 回调函数就是一个被作为参数传递的函数把函数a当做一个值 赋值给函数b的形参, 在调用函数b的时候 在函数体内 适当的实际调用函数a, 这个函数a就是回调函数 ...

  4. python学习之第三课时--基本数据类型及区别,变量

    python学习之第三课时--基本数据类型及区别,变量 基本数据类型及区别 1. 数字类型(int) 数字型--变量值直接是数字,没有双引号""   整数 2. 浮点数(float ...

  5. Python 发送 email 的三种方式

    Python发送email的三种方式,分别为使用登录邮件服务器.使用smtp服务.调用sendmail命令来发送三种方法 本文原文自米扑博客:Python 发送 email 的三种方式 Python发 ...

  6. 测试Python下载图片的三种方法

    简 介: 通过Python软件包对网络URL图片链接进行下载,可以加快后期处理.本文测试了urllib, request两个软件包对图片进行下载效果.如果图片原网页有了防止下载机制,是无法下载图片. ...

  7. python基础教程第三版电子版百度云-《python基础教程第三版》高清版PDF免费下载...

    下载地址1:http://t.cn/EGxO1sW Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 <python基础教程第三版>高清版 ...

  8. python学习音频-详解python播放音频的三种方法

    第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...

  9. python程序实例教程基础-python基础教程第三版源代码

    [实例简介] python基础教程第三版源代码 python基础教程第三版源代码 [实例截图] [核心代码] Beginning_Python_version3_SourceCode └── Begi ...

最新文章

  1. 使用 Vue 2.0 实现服务端渲染的 HackerNews
  2. Science:细胞如何测量自身的大小?答案是:DNA含量
  3. 对信噪比SNR、EbN0、EsN0的个人详细理解
  4. 实录分享 | 计算未来轻沙龙:自然语言处理前沿研讨会
  5. ublox Android 定位超时,[RK3288] [Android 7.1] u-blox GPS调试
  6. Java基础——Java IO详解
  7. 最新试客联盟JS逆向分析
  8. scroll jquery
  9. C#读取匿名对象的属性值的方法总结
  10. Java企业微信号开发之微信网页授权和获取用户信息
  11. Mac OS X 清除DNS缓存
  12. Python短链接生成、长链接还原,就是这么简单!
  13. 粉丝福利 | 秒 get 支付宝同款扫码组件
  14. 案例:学生版增删改查
  15. Linux常用命令大全,一篇搞定
  16. 在自己的app中打开淘宝
  17. 深入理解计算机系统(CSAPP)含lab详解 完结
  18. 出门问问:使用 TensorFlow Lite 在嵌入式端部署热词检测模型
  19. win10扩展屏幕后 桌面图标在屏幕一和屏幕二上乱了
  20. 网络管理实战 (1)理论篇

热门文章

  1. SALOME软件下载
  2. Python的import this 惊喜彩蛋:Python之禅(The Zen of Python)
  3. 租房不要急,Python来帮您(一个超级有用的租房技巧)
  4. ffmpeg 命令 监控屏幕,摄像头 udp推流 收流 。 包括低延迟处理
  5. 互联网行业遇寒,转行IT该如何应对?这四点建议你一定要知道!
  6. 懂得爱――在亲密关系中成长
  7. win10系统显示打印机未连接到服务器,解决win10提示“Windows无法连接到打印机”的方法...
  8. Pubwin 2007有奖“找茬”计划
  9. 分享一个麻将听牌算法(带癞子)(Lua)
  10. LeetCode:390. 消除游戏————中等