Python中的数学模块:Math和Cmath

当我们在日常生活中编写程序时,我们通常遇到需要使用数学来完成任务的情况。像其他编程语言一样,Python提供了各种基本运算操作,如*代表乘法,%代表求模运算,//代表整除。

如果您正在编写一个程序来执行特定任务,如研究周期运动或模拟电路,您将需要使用三角函数以及复数。虽然您不能直接使用这些功能,但您可以先导入两个数学模块来访问它们。这两个模块是mathcmath

第一个模块允许您访问实数的双曲线,三角函数和对数函数,而后者允许您使用复数。在本教程中,我将讨论这些模块提供的所有重要功能。除非明确提到,返回的所有值都是浮点数。

算术函数

这些函数执行各种算术运算,如向下取整,向上取整,取绝对值,分别对应floor(x),ceil(x)以及fabs(x)。ceil(x)函数将返回大于或等于x的最小整数。同样地,floor(x)返回小于或等于x的最大的整数。fabs(x)返回的x的绝对值。

还可以执行非平凡的操作,如使用factorial(x)计算一个数的阶乘。一个正整数的阶乘是所有小于及等于该数的正整数的乘积。它在处理组合和排列时被广泛使用。它也可以用于计算正弦和余弦函数的值。

《Python中的数学模块:Math和Cmath》

math模块中另一个有用的函数是gcd(x,y),求两个数x和y的最大公约数(GCD)。当x和y均为不为零,则该函数返回可以整除x和y的最大正整数。您可以使用以下公式间接计算两个数字的最小公倍数: 

《Python中的数学模块:Math和Cmath》

下面是Python提供的一些算术函数:

《Python中的数学模块:Math和Cmath》

三角函数

这些函数将三角形的角度与其边相关。它们有很多应用,包括研究三角形和周期性现象,如声音和光波的建模。请记住,您提供的角度以弧度表示。

可以直接使用此模块计算sin(x),cos(x)和tan(x)。然而,没有直接的公式来计算cosec(x),sec(x)和cot(x),但是它们的值分别等于sin(x),cos(x)和tan(x)返回值的倒数。

你也可以做逆运算,通过使用asin(x),acos(x)和atan(x)计算给定值的角度,而不是计算某个角度的三角函数的值。

你熟悉勾股定理吗?它指出,斜边长度的平方(与直角相对的一侧)等于其他两边的平方和。斜边也是直角三角形的最大边。math模块提供hypot(a, b)函数计算斜边长度。

《Python中的数学模块:Math和Cmath》

双曲函数

双曲线函数是基于双曲线而不是圆的三角函数的类似物。在三角函数中,点(cos b,sin b)代表单位圆的点。在双曲函数的情况下,点(cos b,sin b)表示形成等边双曲线的右半部分。

像三角函数一样,就可以直接计算出sinh(x),cosh(x)和tanh(x)的值。其余值可以使用这三个值之间的各种关系来计算。也有其他的函数,如asinh(x),acosh(x)和atanh(x),其可被用于计算相应的双曲值的倒数。

《Python中的数学模块:Math和Cmath》

幂函数和对数函数

你可能会比双曲或三角函数更频繁地处理幂和对数。幸运的是,math模块提供了很多函数来帮助我们计算对数。

您可以使用log(x,[base])计算给定基数的值x的对数。如果省略可选基数参数,则x的对数计算以e为基数。在这里,e是一个数学常数,其值是2.71828182 ….它可以使用math.e访问。顺便说一句,Python还允许您使用math.pi访问另一个常量π。

如果要计算以2为底或以10为底的对数值,使用log2(x)和log10(x)会返回比log(x, 2)和log(x, 10)更精确的结果。请记住,没有log3(x)的函数,所以你必须使用log(x, 3)来计算以3为底的对数值。同样适用于所有其他基数。

如果您正在计算的对数值非常接近1,就可以使用log1p(x)。log1p中1p代表1加。因此,log1p(x)计算的是log(1+x),其中x接近于零。用log1p(x)结果更准确。

还可以使用pow(x, y)计算一个数字x的y次幂。在计算之前,此函数将两个参数转换为float类型。如果你想最终的结果以精确整数幂来计算,你应该使用内置的pow()功能或**操作符。

还可以使用sqrt(x)计算任何给定数x的平方根,但同样的事情,也可以通过使用pow(x, 0.5)来完成。

《Python中的数学模块:Math和Cmath》

复数

复数使用矩形或笛卡尔坐标存储在内部。复数z笛卡尔坐标表示为z = x + iy,其中点x表示实部和y表示虚部。另一种表示方法是使用极坐标。 

在这种情况下,复数z将被定义为模数r和相位角phi的组合。模数r是复数z和原点之间的距离。角度phi是从正x轴到连接z和原点的线段以弧度测量的逆时针角度。

虽然cmath模块处理复数可以有很大的帮助。复数的模数可以使用内置函数abs()来计算,并且可以使用cmath模块中提供的函数phase(z)计算出其相位。可以使用polar(z)将复数从矩形形式转换为极坐标形式,这将返回一个元组(r, phi),其中r是abs(z),phi是phase(z)。 

同样,您可以用rect(r, phi)将复数从极坐标形式转换成矩形形式。该函数返回的复数为  r * (math.cos(phi) + math.sin(phi)*1j)。

《Python中的数学模块:Math和Cmath》

cmath模块还允许我们用复数使用普通的数学函数。例如,您可以使用sqrt(z)计算复数的平方根或使用cos(z)计算复数的余弦。

最后的想法

我们上面讨论的所有这些函数都有其特定的应用。例如,您可以使用factorial(x)函数来解决排列组合问题。您可以使用三角函数将矢量分解为笛卡尔坐标。您还可以使用三角函数来模拟周期函数,如声音和光波。 

类似地,可以使用双曲函数来确定悬挂在两极之间的绳索的曲线。由于所有这些功能都是直接用数学模块,它可以很容易地创建执行所有这些任务的小程序。

我希望你喜欢这个教程。如果你有任何问题,可以在评论里让我知道。

英文原文:https://code.tutsplus.com/tutorials/mathematical-modules-in-python-math-and-cmath–cms-26913 

译者:flqzdzxx

    原文作者:我爱学python
    原文地址: https://www.jianshu.com/p/33a2ef2b5618
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞