学习Python数学math模块

学习Python数学math模块

#Level Up Coding

学习python基础只需要一个官方文档的网站就足够!!!

https://www.python.org/

第一步:搜索关键词:python math modeule 官方文档的math库链接:https://docs.python.org/3/library/math.html

数论和表示函数

math.ceil(x) 返回x的上限,即大于或等于x的最小整数。如果x不是浮点数,则委托给x.__ceil__,它应返回整数值。

math.comb(n, k) 返回从n个项目中选择k个项目的方式数,不重复且无序。

当k <= n时,计算为n! / (k! * (n - k)!),当k > n时,计算为零。

也称为二项式系数,因为它等于多项式展开式(1 + x)ⁿ中第k项的系数。

如果其中任何一个参数不是整数,则引发TypeError。如果其中任何一个参数为负数,则引发ValueError。

从版本3.8开始添加。

math.copysign(x, y) 返回一个具有x的绝对值但具有y的符号的浮点数。在支持有符号零的平台上,copysign(1.0, -0.0)返回-1.0。

math.fabs(x) 返回x的绝对值。

math.factorial(n) 返回n的阶乘作为整数。如果n不是整数或为负数,则引发ValueError。

从版本3.9开始弃用:接受具有整数值的浮点数(例如5.0)是不推荐的。

math.floor(x) 返回x的下限,即小于或等于x的最大整数。如果x不是浮点数,则委托给x.__floor__,它应返回整数值。

math.fmod(x, y) 返回fmod(x, y),根据平台C库的定义。

请注意,Python表达式x % y可能不会返回相同的结果。

C标准的意图是fmod(x, y)完全等于x - n*y,其中n是使结果与x具有相同符号且幅度小于abs(y)的整数。

Python的x % y返回具有y的符号而不是x的符号的结果,并且对于浮点数参数可能无法完全计算。

例如,

fmod(-1e-100, 1e100) 

的结果是 

-1e-100

但Python的

-1e-100 % 1e100

的结果是

1e100-1e-100

,无法精确表示为浮点数,并四舍五入为1e100,这是令人惊讶的。

因此,在使用浮点数时通常更喜欢使用函数fmod(),而在使用整数时通常更喜欢使用Python的x % y。

math.frexp(x)

返回x的尾数和指数,作为一对(m, e)。m是浮点数,e是整数,使得x == m * 2**e完全成立。如果x为零,则返回(0.0, 0),否则0.5 <= abs(m) < 1。这用于以便携方式“拆分”浮点数的内部表示。

math.fsum(iterable)

返回可迭代对象中值的准确浮点和。通过跟踪多个中间部分和避免精度损失来实现:

sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
0.9999999999999999
fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
1.0

math.gcd(*integers)

返回指定整数参数的最大公约数。如果任何一个参数为非零,则返回的值是所有参数的最大正整数公约数。如果所有参数都为零,则返回值为0。不带参数的gcd()返回0。

从版本3.5开始添加。

从版本3.9开始更改:添加了对任意数量参数的支持。以前仅支持两个参数。

math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)

如果值a和b彼此接近,则返回True,否则返回False。

两个值是否被视为接近是根据给定的绝对和相对容差来确定的。

rel_tol是相对容差-它是允许的最大差异,相对于a或b的较大绝对值。例如,要设置5%的容差,请传递rel_tol=0.05。默认容差为1e-09,可确保两个值在大约9个小数位内相同。rel_tol必须大于零。

abs_tol是最小的绝对容差-用于接近零的比较。abs_tol必须至少为零。

如果没有发生错误,结果将为:

abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)

IEEE 754的特殊值NaN、inf和-inf将根据IEEE规则处理。具体而言,NaN不被视为接近任何其他值,包括NaN。inf和-inf仅被视为接近它们自己。

从版本3.5开始添加。

math.isfinite(x) 如果x既不是无穷大也不是NaN,则返回True,否则返回False。(请注意,0.0被认为是有限的。)

从版本3.2开始添加。

math.isinf(x) 如果x是正无穷大或负无穷大,则返回True,否则返回False。

math.isnan(x) 如果x是NaN(不是数字),则返回True,否则返回False。

math.isqrt(n) 返回非负整数n的整数平方根。这是n的确切平方根的地板,或者等价于最大的整数a,使得a² ≤ n。

对于某些应用程序,更方便的是,它们具有使n ≤ a²的最小整数a,或者换句话说,n的确切平方根的上限。对于正n,可以使用a = 1 + isqrt(n

  • 1)来计算。

从版本3.8开始添加。

math.lcm(*integers) 返回指定整数参数的最小公倍数。如果所有参数都不为零,则返回的值是所有参数的最小正整数倍数。如果任何一个参数为零,则返回值为0。不带参数的lcm()返回1。

从版本3.9开始添加。

math.ldexp(x, i) 返回x * (2**i)。这本质上是函数frexp()的反函数。

math.modf(x) 返回x的小数部分和整数部分。两个结果都带有x的符号,并且都是浮点数。

math.nextafter(x, y) 返回x朝向y的下一个浮点值。

如果x等于y,则返回y。

示例:

  • math.nextafter(x, math.inf)上升:朝着正无穷大。

  • math.nextafter(x, -math.inf)下降:朝着负无穷大。

  • math.nextafter(x, 0.0)朝着零。

  • math.nextafter(x, math.copysign(math.inf, x))远离零。

从版本3.9开始添加。

math.perm(n, k=None) 返回从n个项目中选择k个项目的方式数,不重复且有序。

当k <= n时,计算为n! / (n - k)!,当k > n时,计算为零。

如果未指定k或k为None,则k默认为n,并且函数返回n!。

引发TypeError如果其中任何一个参数不是整数。如果其中任何一个参数为负数,则引发ValueError。

从版本3.8开始添加。

math.prod(iterable, *, start=1) 计算输入可迭代对象中所有元素的乘积。乘积的默认起始值为1。

当可迭代对象为空时,返回起始值。此函数专门用于处理数字值,并可能拒绝非数字类型。

从版本3.8开始添加。

math.remainder(x, y) 返回x相对于y的IEEE 754样式余数。对于有限的x和非零的有限y,这是差值x - n*y,其中n是商x / y的确切值的最接近的整数。如果x / y恰好在两个连续整数之间,那么会使用最接近的偶整数来代替n。因此,余数r = remainder(x, y)总是满足abs(r) <= 0.5 * abs(y)。

特殊情况遵循IEEE 754:特别是remainder(x, math.inf)对于任何有限的x都是x,remainder(x, 0)和remainder(math.inf, x)对于任何非NaN x都会引发ValueError。如果余数运算的结果为零,则该零将具有与x相同的符号。

在使用IEEE 754二进制浮点数的平台上,此操作的结果始终可以精确表示:不引入四舍五入误差。

从版本3.7开始添加。

math.trunc(x) 删除x的小数部分,保留整数部分。这将朝向0舍入:对于正x,trunc()等效于floor(),对于负x,等效于ceil()。如果x不是浮点数,则委托给x.__trunc__,它应返回整数值。

math.ulp(x) 返回浮点数x的最低有效位的值:

  • 如果x是NaN(不是数字),则返回x。

  • 如果x为负数,则返回ulp(-x)。

  • 如果x为正无穷大,则返回x。

  • 如果x等于零,则返回最小的正非规格化可表示浮点数(小于最小正规范化浮点数sys.float_info.min)。

  • 如果x等于最大的正可表示浮点数,则返回x的最低有效位的值,使得比x小的第一个浮点数是x - ulp(x)。

ULP代表“最后一位的单位”。

另请参阅math.nextafter()和sys.float_info.epsilon。

从版本3.9开始添加。

请注意,frexp()和modf()具有与它们的C等效函数不同的调用/返回模式:它们接受单个参数并返回一对值,而不是通过“输出参数”返回它们的第二个返回值(Python中没有这样的东西)。

在本教程中,我将向您展示如何使用Python内置的math模块。

什么是math模块?

它是C标准定义的数学模块。math模块提供了访问数学函数的功能。

我知道我在上面的陈述中使用了一些术语。让我来澄清一下。上面陈述中的重要术语是模块、C标准、数学函数。

模块:包含一组语句和定义的文件称为模块。例如,文件program.py被称为模块,模块的名称将是program。

您将在以后的教程中了解如何使用模块。

C标准:我们也称它为libc(表示C库),它是C编程语言的标准库。C标准库提供了多个字符串处理函数、数据类型、数学计算、进程控制等等。

数学函数:这些是标准C库提供的一组函数。它们包括abs、labs、div、max、min等等。要了解更多关于数学函数的信息,没有比维基百科更好的了,链接如下: C数学函数

C数学操作是C编程语言标准库中实现的一组函数... en.wikipedia.org

为什么我们需要使用math模块?

嗯,答案很简单:每当我们需要执行数学运算时,math模块就派上了用场。让我给你举个简单的例子。现在是测验时间!

计算一个具有4个边且每边长度为20的正方形的面积。

让我给你一些参数和面积的公式。现在只需在Python中不使用math模块计算面积。挑战不小吧?

计算正多边形的面积的公式如下:

正多边形的面积 现在参数如下:

n = 边数 l = 边的长度 现在你已经明确了事情,给我答案(不使用math模块的程序)需要大约5-7分钟。您可以在下面的评论部分发布答案。

图片来源:killthecan.org 解决方案 我知道大多数人可能会使用计算器计算数值,然后将其放入公式中,然后以编程方式显示结果。这将得到正确的解决方案,但绝对不推荐这样做。

让我先给出程序(使用math模块),然后我将逐行解释它

import math
area = (4 * math.pow(20, 2))/(4 * math.tan(math.pi/4))
print(area)
400.00000000000006

第一步是导入math模块。可以通过import math来完成。这是让您使用其数学方法的方法。 第二步只是将值代入公式。现在这里是math模块的重要性所在。我使用了math模块的三个重要方法,它们分别是math.pow()math.tan()math.pi

  • math.pow() → 这是一个内置的幂函数,用于计算math模块中使用的给定数字的指数。

pow(...)
pow(x, y)
返回x的y次方(x的y次方)。
计算150的4次方

import math
print(math.pow(150, 4))
# 以耶稣的名义(math)和他的奇迹(pow)使用
506250000.0
  • math.tan() → 它用于计算给定弧度中的正切值。

tan(...)
tan(x)
返回x的正切(以弧度表示)。
计算60度的正切

import math
print(math.tan(60))
0.320040389379563
  • math.pi → 顾名思义,它用作圆周率(Pi)的常数值(3.14159265359)。它返回pi的浮点值,而不是记住然后写下pi的值,只需使用math模块。

    打印Pi的值

import math
print(math.pi)
3.141592653589793

第三步只是打印结果,在这种情况下,面积是最终结果。400.00000000000006是正多边形的面积。

现在,既然你们已经掌握了math模块,我需要你们解决这个问题,并在评论部分告诉我答案。谁能得到这个答案将得到我的赞赏。

问题 计算一个具有6个边的正六边形的面积。 提示:a = 6,另外,有关正六边形的更多详细信息,请访问此处

此外,math模块中确切包含44个函数。我怎么知道?好吧,我确实使用帮助函数逐个计数了它们

print(help(math))

以上代码执行后会显示math模块中的所有数学函数。我没有必要解释每个单独的函数。只要记住一件事,只有在需要时才使用资源。

你没有必要记住所有函数。如果你正在使用交互式的Python笔记本,那么可以在不

知道函数的情况下检查函数的语法,如下所示:

感谢自动语法或其他什么 但是,如果您是一个极客,热爱阅读math模块的官方文档,并想了解每个函数的语法,那么没有比Python math模块文档更好的了,如下所示:

math - 数学函数 - Python 3.8.1 文档 此模块提供了C标准定义的数学函数的访问权限。这些函数不能被使用... docs.python.org

总之,我希望你们今天学到了一些新知识。学习是成功的垫脚石。所以继续学习。敬请关注更多更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值