前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础学习|玩转数学模块math

基础学习|玩转数学模块math

原创
作者头像
Aion
修改2024-01-25 09:39:32
17500
代码可运行
修改2024-01-25 09:39:32
举报
运行总次数:0
代码可运行

本文主要介绍下在Python语言环境下对math库进行详细讲解,math库是标准算数运算函数的标准库,他也是Python的一个内置库,主要用来做科学计算使用。希望对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下。

1 概述

Python的内置math库包含了很多函数计算,主要包括数学常量、通用(数论和表示函数)函数操作、幂函数和对数函数、三角函数、角度转换函数、双曲函数和特殊函数操作。python语言中的math库同Java语言一样,也是调用了C语言库。

  • 数学常量计算:例如π、E等
  • 通用函数操作计算:ceil()等
  • 幂函数和对数函数计算:例如log()、pow()、sqrt()等
  • 三角函数计算:例如cos()、sin()等
  • 角度转换函数计算:degrees()、 radians()等
  • 双曲函数计算:acosh()、asinh()、atanh()、cosh()、sinh()、tanh()等
  • 特殊函数计算:gamma()、lgamma()等

2 math库实践

本文操作的版本为Python 3.10,其他的版本请查阅后操作。

$ python -V

Python 3.10.1

如果想要使用Python的内置math库,则需要引入math库后才可以使用库中的函数,例如

import math

2.1 数学常量计算

math库中有很多内置常量,例如pi、e、tau、inf、nan。

  • e:自然对数,其数学计算值为2.718281828459045
  • pi:圆周率π,其数学计算值为3.141592653589793
  • tan:圆周率常数τ(2π),其数学计算值为6.283185307179586。使用版本>=3.6
  • inf:浮点正无穷大,相对的是浮点负无穷大。使用版本>=3.5
  • nan:非数字

代码如下:

代码语言:python
代码运行次数:0
复制
import math

print(math.e)
print(math.pi)
print(math.tau)
print(math.inf)
print(math.nan)

执行结果如下:

2.2 通用函数操作计算

这也是python的math库中函数最多的一个分类。

  • ceil(x):向上获取参数的最大整数。例如ceil(2.4)向上计算后,最大整数是3。
  • comb(n, k):返回不重复且无顺序地从 n 项中选择 k 项的方式总数。当 n < k 时取值为零,当 n >= k 时取值为 n! / (k! * (n - k)!);
  • copysign(x, y):返回一个基于 x 的绝对值和 y 的符号的浮点数
  • fabs(x):求绝对值。
  • factorial(x):求阶乘。例如3的阶乘为3*2*1=6。
  • floor(x):向下获取参数的最大整数ceil(x)相反,与。例如ceil(2.4)向上计算后,最大整数是2。
  • fmod(x, y):求余数。求得x除以y后的余数。
  • frexp(x):以 (m, e) 对的形式返回 x 的尾数和指数。 m 是一个浮点数, e 是一个整数,正好是 x == m * 2**e 。参考函数ldexp(x, i)。
  • fsumiterable:sum()函数的高精度形式。
  • gcd(*Integer):给定数据的最大公约数。
  • isclose 是否相近、isfinite 不是无穷、isinf 是否无穷大、isnan 非数字、isqrt 平方根取整(必须是整数):判断函数,简明释义。可以理解为判断,返回true和false或者具体的数据值。例如print(math.isnan(2))是否是 非数字。
  • lcm(*integers):最小公倍数,在数学上面,同gcd(*Integer)是同一对。版本3.9+
  • ldexp(x, i):返回 x * (2**i) 。 这基本上是函数 frexp() 的反函数。
  • modf(x):获取x的小数和整数部分,都是浮点型。
  • nextafter(x, y):返回 x 趋向于 y 的最接近的浮点数值。版本3.9+
  • perm(n, k=None):返回不重复且有顺序地从 n 项中选择 k 项的方式总数。当 k <= n 时取值为 n! / (n - k)!;当 k > n 时取值为零。如果 k 未指定或为 None,则 k 默认值为 n 并且函数将返回 n!。
  • prod(iterable, *, start=1):从1 开始,iterable 中所有元素的积。
  • remainder(x, y):返回x 相对于 y 的余数。例如remainder(4, 3),则返回1;如果反过来则为-1。
  • trunc(x):四舍五入方法的一种。去除小数部分的 x ,只留下整数部分。
  • ulp(x):返回浮点数 x 的最小有效比特位的值,可以参考math.nextafter() 。
    • 如果 x 是 NaN (非数字),则返回 x。
    • 如果 x 为负数,则返回 ulp(-x)。
    • 如果 x 为正数,则返回 x。
    • 如果 x 等于零,则返回 去正规化的 可表示最小正浮点数 (小于 正规化的 最小正浮点数 sys.float_info.min)。
    • 如果 x 等于可表示最大正浮点数,则返回 x 的最低有效比特位的值,使得小于 x 的第一个浮点数为 x - ulp(x)。
    • 在其他情况下 (x 是一个有限的正数),则返回 x 的最低有效比特位的值,使得大于 x 的第一个浮点数为 x + ulp(x)。

代码如下:

代码语言:python
代码运行次数:0
复制
import math

print(math.ceil(2.4))
print(math.comb(3, 4))
print(math.comb(4, 3))
print(math.copysign(2,3))
print(math.fabs(2))
print(math.fabs(-3))
print(math.factorial(3))
print(math.floor(2.4))
print(math.fmod(2, 3))
print(math.fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, 2]))
print(math.gcd(2,8,10))
print(math.isclose(2,3));
print(math.isfinite(1));
print(math.isinf(6));
print(math.isnan(2));
print(math.isqrt(4));
print(math.isqrt(8));
print(math.lcm(2,8,10))
print(math.ldexp(3,2))
print(math.modf(3.0918))
print(math.nextafter(3,2))
print(math.perm(6,3))
print(math.prod([2,3,6]))
print(math.remainder(4, 3))
print(math.trunc(3.87))
print(math.ulp(3.98))
print(math.ulp(-4))

执行结果如下:

2.3 幂函数和对数函数计算

在数学概念中,幂函数和对数函数是相对的,使用的比较少,大多数使用在一些大数据量的计算下,或者一些数学教学上面。

  • math.exp(x):获取e的x次幂
  • math.expm1(x):获取e的x次幂减1,参考math.exp(x)
  • math.log(x):获取x的对数(底为e)
  • math.log1p(1):获取1加x的自然对数(底为e)
  • math.log10(x):x 底为10的对数
  • math.pow(x,y):获取x的y次幂
  • math.sqrt(x):获取x的平方根

代码演示:

代码语言:python
代码运行次数:0
复制
import math

print(math.exp(3));
print(math.expm1(1e-5));
print(math.log(4));
print(math.log1p(10));
print(math.log10(3));
print(math.pow(2,4));
print(math.sqrt(9));

结果如下:

2.4 三角函数计算

在Python中,可以使用math模块来处理三角函数。math模块包含了许多常用的数学函数,包括三角函数。

  • sin(x):计算x的正弦值,其中x是弧度值。
  • cos(x):计算x的余弦值,其中x是弧度值。
  • tan(x):计算x的正切值,其中x是弧度值。
  • arcsin(x):计算x的反正弦值,返回弧度值。
  • arccos(x):计算x的反余弦值,返回弧度值。
  • arctan(x):计算x的反正切值,返回弧度值。
  • atan2(y, x):以弧度为单位返回 atan(y / x) 。
  • dist(p, q):返回 p 与 q 两点之间的欧几里得距离,以一个坐标序列(或可迭代对象)的形式给出。 两个点必须具有相同的维度。
  • hypot(*coordinates):返回欧几里得范数,sqrt(sum(x**2 for x in coordinates))。 这是从原点到坐标给定点的向量长度。对于一个二维点 (x, y),这等价于使用毕达哥拉斯定义 sqrt(x*x + y*y) 计算一个直角三角形的斜边。在 3.8 版更改: 添加了对 n 维点的支持。 之前的版本只支持二维点。在 3.10 版更改: 改进了算法的精确性,使得最大误差在 1 ulp (最后一位的单位数值) 以下。 更为常见的情况是,结果几乎总是能正确地舍入到 1/2 ulp 范围之内。最后简单点就是:先计算它的所有参数的平方和,再返回该和的平方根。

代码演示:

代码语言:python
代码运行次数:0
复制
import math

print(math.sin(30))
print(math.cos(45))
print(math.tan(60))
print(math.asin(0.5))
print(math.acos(0.5))
print(math.atan(1))
print(math.atan2(45, 0.5))
print(math.dist([0,1], [1,0]))
print(math.hypot(1,2,3,4,5,6,7,8,9,10))

结果展示:

2.5 角度和弧度转换函数计算

角度和弧度互相转换,这个我感觉可以放在三角函数的分类中,放在这里似乎是有些不合适。

  • math.degrees(x):将角度 x 从弧度转换为度数。
  • math.radians(x):将角度 x 从度数转换为弧度。

代码展示:

代码语言:python
代码运行次数:0
复制
import math

print(math.degrees(0.5))
print(math.radians(30))

结果展示:

2.6 双曲函数计算

双曲函数的一些基本运算。

  • math.acosh(x):返回x的反双曲余弦值
  • math.asinh(x):返回x的反双曲正弦值
  • math.atanh(x):返回x的反双曲正切值
  • math.cosh(x):返回x的双曲余弦值
  • math.sinh(x):返回x的双曲正弦值
  • math.tanh(x):返回x的双曲正切值

代码展示:

代码语言:python
代码运行次数:0
复制
import math

print(math.acosh(8))
print(math.asinh(5))
print(math.atanh(0.5))
print(math.cosh(87))
print(math.sinh(18))
print(math.tanh(0.897))

结果展示:

2.7 特殊函数计算

特殊函数都是在3.2版本增加进来的,后续的延续版本都存在这些函数。

  • math.erf(x):输入值x的误差函数
  • math.erfc(x):获取输入值x的互补误差函数
  • math.gamma(x):获取输入值x的伽马函数值
  • math.lgamma(x):获取伽马函数在输入值x的绝对值的自然对数,等价于math.log(math.fabs(math.gamma(-0.67)))

代码展示:

代码语言:python
代码运行次数:0
复制
import math

print(math.erf(0.38))
print(math.erfc(0.38))
print(math.gamma(-0.38))
print(math.lgamma(-0.38))

结果展示:

3 总结

Math是Python中最常用的内置科学计算库,它为数据分析和数据科学计算提供了丰富的功能和灵活的定制选项。本文详细介绍了Math库的常用功能和应用场景,并通过实例演示了它在Python科学计算中的具体应用。

利用Math库,我们可以轻松的获取到科学计算的常量;还可以通过高阶函数针对三角函数、角度转换、曲线等进行计算;同时,Math还支持特殊函数计算,以满足更复杂的科学计算需求。

引用

  1. https://docs.python.org/zh-cn/3.10/library/math.html

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 概述
  • 2 math库实践
    • 2.1 数学常量计算
      • 2.2 通用函数操作计算
        • 2.3 幂函数和对数函数计算
          • 2.4 三角函数计算
            • 2.5 角度和弧度转换函数计算
              • 2.6 双曲函数计算
                • 2.7 特殊函数计算
                • 3 总结
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                http://www.vxiaotou.com