这里的写法意思是11又二分之一,也就是11.5,因为我突然意识到有些代码在12Numpy之前是Python原装包就可以用来处理数学问题、而又不是被写在人类DNA里的,所以有必要罗列一遍。Python Math模块是随标准Python一同打包发布的、高效而符合标准的数学处理模块。虽然说不用去特意下载,但是在使用时还是需要声明导入的。圆周率π,直接使用math.pi,程序会获得一个有十五位小数点的近似值。import mathpi = math.piprint(pi)
e,呃,书上说这个叫欧拉数,说实话我还是第一次见这种说法,而且我印象里这个东西有另一个名字叫自然常数,又或者是自然对数什么的,反正我记不住这种定义。使用math.e,程序同样会返回一个十五位小数的近似值。import mathe = math.eprint(e)
无穷大(infinity),也就是∞,这个东西在数学分析里面挺常见的,使用math.inf,它在打印时会输出"inf"(或者"-inf"),但是在程序进行中会拥有数学中无穷大的性质。import mathprint(f"输出正无穷{math.inf}")print(f"输出负无穷{-math.inf}")
无穷大本质上是将inf关联给了Python中的常量float("inf"),因此进行条件判断import mathprint(math.inf == float("inf"))
非数值,也就是NaN(Not a Number),可以是由无效输入引起的,也可以是数的变量被字符等破坏形成的,用math.nan表示,不过通常情况下不会主动定义这个数给某个变量。与inf类似,math.nan也是被关联给了Python中的常量,它对应的是float("nan"),在执行判断时可以利用这一点,避免程序因数的出错而无效。常数部分到此结束,接下来是一些运算函数,虽然有些可以通过四则运算或者简单的幂运算叠加产生等价效果,但是使用这些函数可以大大简化代码长度,让阅读更方便,而且代码运行也会更快。math.factorial()阶乘函数,小括号内仅接收非负整数,返回这个非负整数的阶乘。math.ceil()取整函数,输入正实数向下取整(如6.5返回6),输入负实数向上取整(如-12.43返回-12),输入整数返回原数。math.floor()取整函数,你可能还在疑惑上一个ceil天花板表示什么意思,但是看到floor肯定就能懂了,floor取整与ceil取整相反,在math.floor()小括号内输入正实数向上取整(6.5返回7),输入负实数向下取整(-12.43返回-13),输入整数返回原数。math.trunc()取整函数,这个是比较好理解的保留整数部分。math.isclose()比较函数,这是一个条件判断,会返回True或False,当只输入两个数时,会根据自己默认设置的一套评判标准来判断两数的相近程度:import mathprint(math.isclose(6,7))print(math.isclose(6.999999999,7))
isclose会对输入两数运算出两个式子,若两个式子之间形成了一个特定的不等式关系,则返回True,否则返回False,换句话说,它提供了“是否相近?”这个命题一个量化标准。首先需要引入两个该标准下使用的参数,分别为相对容差(reltol)和绝对容差(abstol),接下来分别用r和a指代相对容差与绝对容差。相对容差r默认值为le-09,即10的负九次方,用于评估实际值与预估值之间差距相对于预估值的量值(这里的实际值与预估值跟输入两数位置没有关联,后续公式也可以看出来)。绝对容差a默认值为0.0,是接近时的最大差值,而与输入值无关。| m - n | ≤ max[ r * max( |m| , |n| ) , a]“m,n中绝对值的最大值与相对容差r之积”与“最大容差a”中的最大值在避免因二进制近似存储问题而出现误差时,常使用绝对容差与相对容差默认值,这也是为什么默认值设置的是小数点后9位一个1。你也可以在使用isclose()函数时,自行设置绝对误差值与相对误差值这两个参数,函数执行时依然会使用上述公式。比如:import mathprint(math.isclose( 6 , 7 , rel_tol = 0.5 , abs_tol = 1))
给出极宽泛的绝对误差和相对误差,这样即使是6和7也能返回True。这个相对误差值与绝对误差值的定义需要稍微记忆一下,只需要把原本的英文脚标改为下划线后面的字符就好。math.pow()幂函数,这个与python本身的pow()函数是等价的,但是运行更快,所以推荐使用这个。小括号内至少需输入两个参数,需要注意顺序,依次输入m,n将返回m的n次幂,m和n可以为浮点数。输入三个参数时,即math.pow(m,n,p),将先进行math.pow(m,n),再对结果进行p的取模运算,其返回值等价于(m**n)%p,但是,很显然,更快,所以更推荐。math.exp()指数运算函数,小括号内输入单参数(x),其结果与math.e**x和pow(math.e , x)等价,但是输出最快,而且结果更精确。math.log()对数运算函数,可输入一或两个参数,只输入单参数x时,输出值为ln x ,输入两个值m,n时,则以n为底输出lognm。math.gcd()最大公约数,接收两个整数,返回最大公约数。math.radians()角弧转换函数,输入单参数作为角度,返回对应弧度。三角函数math.sin(),math.cos(),math.tan(),输入单参数作为弧度返回三角函数值。