使用Python玩转高等数学:三角函数

从三角函数开始,我们使用matplotlib绘制函数图像,matplotlib是图形绘制库,使用matplotlib可以方便的绘制函数图形,以及直方图、条形图、散点图等统计图形。

matplotlib的绘图命令和matlab的绘图命令基本相似,在使用上可以互相借鉴。安装matplotlib最简单的方法就是在操作系统的命令行窗口分别输入并执行下面的命令:

python -m pip install -U pip setuptools
python -m pip install -U matplotlib

使用matplotlib绘图,会用到Numpy库,Numpy库主要用于科学计算。编写Python程序解决数学问题,sympy库、matplotlib库、Numpy库是必然要用到的,读者还需要掌握这些库的用法。在操作系统的命令行窗口输入并执行下面的命令安装Numpy库:

pip3 install numpy

例1 绘制sin(x)函数和cos(x)函数图像

#导入numpy库
import numpy as np
#导入绘图工具库
import matplotlib.pyplot as plt
# np的linspace函数在指定的间隔范围内返回均匀间隔的一组数值
# 例如:np.linspace(start,end,n=50),在start- end,均匀的返回n个数值
# 定义了一个numpy的数组x,从-2π到2π,共200个值
x=np.linspace(-2*np.pi,2*np.pi,200,endpoint=True)
#对x进行cos计算
cos= np.cos(x)
#设置cos图像的线条颜色、线条粗细和图像标签标签
plt.plot(x,cos,color='red',linewidth=1.5,label='cos')
#对x进行sin计算
sin= np.sin(x)
#设置sin图像的线条颜色、线条粗细和图像标签标签
plt.plot(x,sin,color='blue',lw=2.5,label='sin')
#设置图例显示位置
plt.legend(loc='lower left')#设定x轴范围
plt.xlim(-2*np.pi*1.1,2*np.pi*1.1)
#设定y轴范围
plt.ylim(cos.min()*1.1,cos.max()*1.1)#设置X轴刻度值
plt.xticks([-2*np.pi,-3*np.pi/2,-np.pi,-np.pi/2,0,np.pi/2,np.pi,3*np.pi/2,2*np.pi],[r'-$2\pi$',r'-$3\pi/2$',r'-$\pi$',r'-$\pi/2$','0',r'$\pi/2$',r'$\pi$',r'-$3\pi/2$',r'$2\pi$'])#设置Y轴刻度值
plt.yticks([-1,0,1])
#通过plt.gca()获取坐标轴对象 然后设置属性
ax=plt.gca()
#隐藏top和right周
ax.spines['top'].set_color("none")
ax.spines['right'].set_color("none")
#把左下设置为0点
ax.spines['left'].set_position(('data',0))
ax.spines['bottom'].set_position(('data',0))plt.show()

代码解读

使用matplotlib绘制函数图像,要比sympy麻烦一些,绘图前要创建绘图需要的数据,对坐标轴进行设置。程序首先调用Numpy库的linspace()函数,创建绘制三角函数图像需要的数据,即三角函数变量x的取值范围。linspace()函数在指定的间隔范围内返回均匀间隔的一组数值,x的取值范围为-2π到+2π范围,在该范围内均匀取200个数值。

np.cos(x)返回x取不同值时cos的函数值,返回一个存储cos函数值的列表对象。

matplotlib库pyplot模块的plot()函数使用给出的数据在坐标轴上绘制曲线,参数x和cos是要绘制的数据点,color是曲线的颜色,lw是曲线的宽度,label是标识曲线的标签。

pyplot模块的legend()函数设置图例的位置,当需要在一个坐标轴上绘制多条曲线时,显示图例是不错的绘图方法。pyplot模块的xlim()函数设置坐标轴的取值范围,X轴的取值范围为-2π、-3π/2、π、-π/2、0,π/2、π、3π/2、2π。Y轴的取值范围为cos列表元素的最小值和cos列表元素的最大值,即1和-1。pyplot模块的xticks()函数设置X轴刻度的显示样式,若不设置显示样式,matplotlib会把X轴刻度显示为数值,这里希望显示为弧度。

“- π \pi π”为laText排版系统的语法,在python中使用laText,需要在文本的前后加上$符号,pi是π,matplotlib会自动解析laText内容并排版输出。最后调用pyplot模块的gca()函数获取轴对象,隐藏top和right轴,matplotlib在绘图时默认会有4个轴,两个横轴和两个竖轴。

观察函数图像,发现y=sin(x)和y=cos(x)都是以2π为周期的周期函数,它们的定义域都是区间(-∞,+∞),值域都是闭区间[-1,1],自变量x的单位是弧度。

y=sin(x)和y=cos(x)函数的最大值是1,最小值是-1。

y=sin(x)在(-π/2,π/2)上单调增加,函数的周期是2π,因此y=sin(x)在区间[2kπ-π/2,2kπ+π/2]上单调增加,k为整数。同理,y=sin(x)在区间[2kπ+π/2,2kπ+3π/2]上单调减少。

从函数图像中还发现,y=sin(x)关于原点对称,是奇函数,y=cos(x)关于Y轴对称,是偶函数。

例2 绘制tan(x)函数图像

#导入numpy库
import numpy as np
#导入绘图工具库
import matplotlib.pyplot as plt
x=np.linspace(-2*np.pi,2*np.pi,200,endpoint=True)
#对x进行tan计算
tan= np.tan(x)
#划分曲线,分别设置曲线样式
ym1 = np.ma.masked_where(tan > 0, tan)
ym2 = np.ma.masked_where(tan < 0, tan)
#绘制曲线
lines = plt.plot(x,tan,x,ym1,x,ym2,label='tan')
#用红色虚线绘制正切函数竖直渐进线
plt.setp(lines[0], color='red',linestyle='dashed',linewidth=1)
#用蓝色线绘制曲线
plt.setp(lines[1], color='blue',linewidth=1)
plt.setp(lines[2], color='blue',linewidth=1)
#设定x轴范围
plt.xlim(-2*np.pi*1.1,2*np.pi*1.1)
#设定y轴范围
plt.ylim(-9,9)
#设置X轴刻度值
plt.xticks([-2*np.pi,-3*np.pi/2,-np.pi,-np.pi/2,0,np.pi/2,np.pi,3*np.pi/2,2*np.pi],[r'-$2\pi$',r'-$3\pi/2$',r'-$\pi$',r'-$\pi/2$','0',r'$\pi/2$',r'$\pi$',r'$3\pi/2$',r'$2\pi$'])#设置Y轴刻度值
plt.yticks(list(range(-9,10,1)))
#通过plt.gca()获取坐标轴对象 然后设置属性
ax=plt.gca()
#隐藏top和right周
ax.spines['top'].set_color("none")
ax.spines['right'].set_color("none")
#把左下设置为0点
ax.spines['left'].set_position(('data',0))
ax.spines['bottom'].set_position(('data',0))
plt.show()

代码解读

Numpy库ma模块的masked_where函数从给定的数据集中选取符合条件的数据并进行屏蔽,masked_where(tan > 0, tan)会从tan数据集选取值大于0的数据,对这些数据进行屏蔽,并返回没有被屏蔽的数据集。

plot()函数可以绘制多条曲线,依次传入绘制曲线的数据集即可。pyplot模块的setp()函数可以设置每条绘制曲线的样式。


观察函数图像,发现tan(x)函数以π为周期,向Y轴两端无限延伸,没有最大值,也没有最小值,值域为全体实数。进一步观察发现,函数曲线在±π/2或kπ+π/2(k为整数)处没有值,曲线只是无限接近该值。

因为根据定义,tan(α)=y/x,p=π/2时,x=0无意义,正切值不存在。tan(x)函数的定义域为{x|x≠(πbai/2)+kπ,k∈Z}。观察图像还发现,函数图像关于原点对称,是奇函数。研究三角函数时,掌握三角函数之间的关系是非常重要的,可以通过三角函数之间的关系由一个三角函数推导出其它三角函数。

例如,当函数角度相同时:

根据sin2α+cos2α=1关系,sin(a)函数可推导出cos(a)函数,cos(a)函数可推导出sin(a)函数。根据tan(a) = sin(a)/cos(a)关系,sin(a)函数和cos(a)函数可推导出tan(a)函数。

感谢阅读!!!

使用Python玩转高等数学:三角函数相关推荐

  1. python 对数函数_使用Python玩转高等数学(4):对数函数

    更多文章见微信[使用Python玩转数学]微信号:langhonglin0509 指数函数的反函数: y = logax (a是常数,且a>0, a!=1) 叫做对数函数,它的定义域是区间(0, ...

  2. 使用Python玩转高等数学(1):集合与区间

    更多文章见微信[使用Python玩转数学]微信号:langhonglin0509 集合是数学中一个很重要的基本概念,是指具有某种特定性质的事物的总体,组成这个集合的事物称为该集合的元素. 例1 下面是 ...

  3. 使用Python玩转高等数学(2):幂函数

    幂函数的公式如下: y = x^a a是实数,函数的定义域要看a的取值而定.当a取任何实数时,函数在(0,+∞)区间内总有定义:当a>0时,函数在[0,+∞)区间内总有定义. y = x,y=x ...

  4. python开发pc软件_程序员带你十天快速入门Python,玩转电脑软件开发(二)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  5. 大学python选择题题库及答案_大学慕课用Python玩转数据题库及答案

    大学慕课用Python玩转数据题库及答案 更多相关问题 (19分)电解原理在化学工业中有广泛应用.右图表示一个电解池,装有电解液c :A.B是两块电极板,通过导线与直流 用铂电极电解CuCl2与CuS ...

  6. python做电脑软件-程序员带你十天快速入门Python,玩转电脑软件开发(二)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  7. python入门教程软件-程序员带你十天快速入门Python,玩转电脑软件开发(四)

    本系列文章立志于从一个已经习得一门编程语言的基础之上,全面介绍Python的相关开发过程和相关经验总结.本篇文章主要是基于上一篇的程序员带你十天快速入门Python,玩转电脑软件开发(三)的基础之上, ...

  8. python好学吗mooc中文网-2020年大学mooc用Python玩转数据作业答案

    2020年大学mooc用Python玩转数据作业答案 更多相关问题 一台电脑先涨价着一%,后降价2一%,这台电脑一现价同原价相比是()A.一样的B.降低了C.提高了直接写出9数 3÷地下%=6×3下% ...

  9. python好学吗mooc中文网-用Python玩转数据

    spContent=欢迎来到<用Python玩转数据>,这是第10次开课,大壮老师会尽量用非计算机专业(需要有一些编程基础,最好学过一门程序设计语言,但不一定是Python)小伙伴们能听懂 ...

最新文章

  1. Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料--第1章
  2. CM: 如何通过attachment的physical instance id反查到所属的business object ID
  3. CryEngine新引擎正式开放源代码,但仅限开发游戏
  4. kali 运行java_kali linux运行java程序
  5. 持续集成最佳实践_集成服务性能最佳实践–数据流优化
  6. as3 的3Dwebgame引擎Dgame3D正式开源
  7. mysql innodbdatahomedir_mysql gtid复制
  8. 微软Azure、谷歌GAE、亚马逊AWS比較
  9. mysql 初始化_MySQL安装与初始化
  10. url存在链接注入漏洞_检测到目标URL存在SQL注入漏洞
  11. VC9、VC11、VC14、VC15库 最新下载链接
  12. 易语言dchp服务器,易语言模拟DHCP报文源码
  13. python实现Kmeans算法
  14. 梯度消失,梯度爆炸产生的原因及解决办法
  15. java itextPdf导出pdf
  16. 学习编程,既要仰望星空,又要脚踏实地
  17. 关于CDN加速 CDN加速是什么
  18. 传奇 定时任务(泡点、时间触发、任务活动等)
  19. 计算机视觉面试宝典--文本检测与GAN篇
  20. Re:从零开始的DS学习 十大排序算法我都整理好了

热门文章

  1. hdu 4915 Parenthese sequence(贪心,模拟)
  2. ER Win 的官方下载地址
  3. html使用正则验证
  4. python文件打不开 环境变量错误,《自拍教程27》环境变量的常见错误,环境变量错误...
  5. 去除新房子甲醛的方法
  6. 前后端分离架构下CSRF防御机制
  7. 前端知识总结之linux
  8. 我为什么回国(by张朝阳)
  9. RedisManager使用手册(四)-- 集群创建(Docker)
  10. statement和prepareStatement的区别