捋一捋Python中的数学运算math库之三角函数

简介: 正式的Python专栏第20篇,同学站住,别错过这个从0开始的文章!

很多学习编程的都多多少少学习了一些数学知识。


前篇我们讲讲那些常用的数学处理函数, 我们接着过一过三角函数!


数学三角函数

除了前篇说的数的取值,指数对数等,还有我们初中数学的一些函数。如下:


正弦,余弦,正切

反正弦,反余弦,反正切

等等的,下面会使用math.sin/ math.cos/ math.tan 等等来进行三角函数运算。


他们都有一个共同点,参数都是弧度制(而非角度制)。


而asin/acos/atan 这类接收数字,输出的结果也并非角度,也是弧度值。


举个例子之计算 30度正弦值

如下,我们都知道3 0 ∘ 30^\circ30

正弦值等于0.5,但是上面提到的函数都只接受弧度的


sin ⁡ \sinsin(3 0 ∘ 30^\circ30

) = 1/2


也就是说:我们需要使用 30度 对应的弧度值,传给sin函数,才能算出sin(30度)


至此,我们需要引入两个重要的函数:


math.degrees(传入参数为弧度值)# 比如math.degrees(math.PI) 结果为180(度)
math.radians(传入参数为角度值)# 比如math.radians(180) 结果为PI
#角度转弧度
rad =  math.radians(角度值) #或者把知道角度的弧度值给进来:比如30度
#计算sin 给进弧度值对应的某个角度
math.sin(rad)  # 结果为1/2

代码展示

鉴于很多函数都需要接收一个产生或者是多个参数,学委把函数调用进行包装。

编写了exec函数,动态的打印执行了哪个函数,参数是啥。

如果你是小白,请简单理解exec函数是一个帮你运行数学函数的工具即可,它的用法是:

exec(参数,被调用的数学函数)
或者
exec(参数列表,被调用的数学函数)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/26 10:02 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : number_demo.py
# @Project : hello
# @Blog: https://blog.csdn.net/geeklevin/article/details/121024945
import math
#这个函数为了方便输出展示,前篇文章有更多解释,需要请查看前篇。
def exec(obj, func, label=""):
    if type(obj) == list:
        print("%s : apply func %s on obj %s = %s" % (label,func, obj, func(*obj)))
    elif type(obj) == tuple:
        print("%s : apply func %s on obj %s = %s" % (label,func, obj, func(*obj)))
    else:
        #print("type of obj is %s " % type(obj))
        print("%s : apply func %s on obj %s = %s" % (label,func, obj, func(obj)))
exec(math.pi, math.degrees,"把角度转换为弧度") # pi 弧度 为 180度
exec(180, math.radians,"把弧度换转为角度") # 180度 为 1 pi 弧度
exec(math.pi/6, math.sin, "求sin(30度)") # sin(30度)= 1/2
exec(0.5, math.asin, "求asin(30度)") # asin(1/2) = 30度
print(math.degrees(math.asin(0.5))) # 30度
exec(math.pi/3, math.cos, "求cos(60度)") # cos(60度)= 1/2
exec(0.5, math.acos, "求acos(60度)") # acos(1/2) = 60度
print(math.degrees(math.acos(0.5))) # 60度
exec(0, math.tan, "求tan(0度)")
exec(0, math.atan, "求atan(0度)")
exec(math.pi/2, math.tan, "求tan(90度)") #tan (90度)没有任何意义,但是在计算机中math.pi/2 弧度没有办法严格表示为90读
print(math.tan(math.radians(45)))#tan(45度)= 1
print(math.tan(math.radians(90)))#tan (90度) 没有任何意义
#print(math.radians(90))# 因为角度转弧度并非精准表示的,计算机只能算一个无限逼近的数字弧度值来表示90,所以上面的90可以计算的
exec(1, math.atan, "求atan(0度)")
print(math.degrees(math.atan(1))) # 45度


下面是运行效果:

image.png

可以看到每个输出都跟我们实际数学学习到的公式结果一直(有些值只是稍微接近)。


注意! 但是tan(9 0 ∘ 90^\circ90

)居然被算出来了!

数学课本都说tan(9 0 ∘ 90^\circ90

)毫无意义!


这里我们也看到上面的三角函数都接受弧度值,这类值在计算机中只能表现为一个不断逼近的数字,所以尽管我们通过radians函数把90翻译为弧度了,但这个值不是绝对的90度。不会出现无意义的结果!


题外话:关于exec函数,请查看前篇文章说明。


目录
相关文章
|
1月前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
70 20
|
2天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
24 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
26天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
102 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
2月前
|
XML JSON 数据库
Python的标准库
Python的标准库
185 77
|
2月前
|
算法 数据处理 Python
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
Savitzky-Golay滤波器是一种基于局部多项式回归的数字滤波器,广泛应用于信号处理领域。它通过线性最小二乘法拟合低阶多项式到滑动窗口中的数据点,在降噪的同时保持信号的关键特征,如峰值和谷值。本文介绍了该滤波器的原理、实现及应用,展示了其在Python中的具体实现,并分析了不同参数对滤波效果的影响。适合需要保持信号特征的应用场景。
160 11
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
|
2月前
|
XML JSON 数据库
Python的标准库
Python的标准库
71 11
|
3月前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
224 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
2月前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
103 8
|
2月前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
558 7
|
2月前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
87 4

热门文章

最新文章