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