Python中的数学模块:数学和数学

在日常生活中编写程序时,通常会遇到需要使用一些数学知识才能完成任务的情况。 像其他编程语言一样,Python提供了各种运算符来执行基本计算,例如*表示乘法, %表示模数和//表示底数除法。

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

第一个使您可以访问实数的双曲,三角和对数函数,而后一个则使您可以处理复数。 在本教程中,我将介绍这些模块提供的所有重要功能。 除非明确说明,否则所有返回的值都是浮点数。

算术函数

这些函数执行各种算术运算,例如分别使用floor(x)ceil(x)fabs(x)函数来计算数字的底数,上限或绝对值。 函数ceil(x)将返回大于或等于x的最小整数。 同样, floor(x)返回小于或等于x的最大整数。 该fabs(x)函数返回x的绝对值。

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

import math

def getsin(x):

    multiplier = 1
    result = 0
    
	for i in range(1,20,2):
		result += multiplier*pow(x,i)/math.factorial(i)
		multiplier *= -1
		
	return result
    

getsin(math.pi/2) # returns 1.0
getsin(math.pi/4) # returns 0.7071067811865475

数学模块中的另一个有用函数是gcd(x,y) ,它为您提供了两个数字xy的最大公约数(GCD)。 当xy都不为零时,此函数返回将xy均除的最大正整数。 您可以使用以下公式间接使用它来计算两个数字的最小公倍数:

gcd(a, b) x lcm(a, b) = a x b

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

import math

math.ceil(1.001)    # returns 2
math.floor(1.001)   # returns 1
math.factorial(10)  # returns 3628800
math.gcd(10,125)    # returns 5

math.trunc(1.001)   # returns 1
math.trunc(1.999)   # returns 1

三角函数

这些功能将三角形的角度与其边相关联。 它们具有许多应用,包括三角形的研究以及诸如声波和光波之类的周期性现象的建模。 请记住,您提供的角度以弧度为单位。

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

您也可以通过使用asin(x)acos(x)atan(x)进行逆运算,并计算具有给定值的角度,而不用计算某个角度的三角函数的值。

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

import math

math.sin(math.pi/4)    # returns 0.7071067811865476
math.cos(math.pi)      # returns -1.0
math.tan(math.pi/6)    # returns 0.5773502691896257
math.hypot(12,5)       # returns 13.0

math.atan(0.5773502691896257) # returns 0.5235987755982988
math.asin(0.7071067811865476) # returns 0.7853981633974484

双曲函数

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

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

import math

math.sinh(math.pi)    # returns 11.548739357257746
math.cosh(math.pi)    # returns 11.591953275521519
math.cosh(math.pi)    # returns 0.99627207622075

math.asinh(11.548739357257746)   # returns 3.141592653589793
math.acosh(11.591953275521519)   # returns 3.141592653589793
math.atanh(0.99627207622075)     # returns 3.141592653589798

由于math.pi大约等于3.141592653589793,因此当我们对sinh(math.pi)返回的值使用asinh()时,我们又得到了π。

幂和对数函数

与双曲线或三角函数相比,您可能会更频繁地处理幂和对数。 幸运的是, 数学模块提供了许多功能来帮助我们计算对数。

您可以使用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)log1p1p表示加号1。 因此, log1p(x)计算log(1+x) ,其中x接近零。 但是,使用log1p(x)可以得到更准确的结果。

您还可以通过使用pow(x, y)计算升到y的数字x的值。 在计算幂之前,此函数将两个参数都转换为float类型。 如果要以精确的整数幂计算最终结果,则应使用内置的pow()函数或**运算符。

您也可以使用sqrt(x)计算任何给定数xsqrt(x) ,但是也可以通过使用pow(x, 0.5)来完成相同的事情。

import math

math.exp(5)                      # returns 148.4131591025766
math.e**5                        # returns 148.4131591025765

math.log(148.41315910257657)     # returns 5.0
math.log(148.41315910257657, 2)  # returns 7.213475204444817
math.log(148.41315910257657, 10) # returns 2.171472409516258

math.log(1.0000025)              # returns 2.4999968749105643e-06
math.log1p(0.0000025)            # returns 2.4999968750052084e-06

math.pow(12.5, 2.8)              # returns 1178.5500657314767
math.pow(144, 0.5)               # returns 12.0
math.sqrt(144)                   # returns 12.0

复数

复数在内部使用直角坐标或直角坐标存储。 复数z将在笛卡尔坐标中表示为z = x + iy ,其中x表示实部, y表示虚部。 表示它们的另一种方法是使用极坐标。

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

在处理复数时, cmath模块可以提供很大的帮助。 可以使用内置的abs()函数来计算复数的模数,并且可以使用cmath模块中可用的phase(z)函数来计算其相位。 您可以使用polar(z)将矩形形式的复数转换为极性形式,这将返回一对(r, phi) ,其中rabs(z)且phi为phase(z)

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

import cmath

cmath.polar(complex(1.0, 1.0))
# returns (1.4142135623730951, 0.7853981633974483)

cmath.phase(complex(1.0, 1.0))
# returns 0.7853981633974483

abs(complex(1.0, 1.0))
# returns 1.4142135623730951

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

import cmath

cmath.sqrt(complex(25.0, 25.0))
# returns (5.49342056733905+2.2754493028111367j)

cmath.cos(complex(25.0, 25.0))
# returns (35685729345.58163+4764987221.458499j)

复数具有许多应用,例如对电路建模,流体动力学和信号分析。 如果您需要做任何事情, cmath模块都不会令您失望。

最后的想法

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

类似地,可以使用双曲函数确定悬挂在两个极点之间的绳索的曲线。 由于所有这些功能都可以直接在math模块中使用,因此创建执行所有这些任务的小程序非常容易。

希望您喜欢本教程。 如果您有任何疑问,请在评论中告诉我。

翻译自: https://code.tutsplus.com/tutorials/mathematical-modules-in-python-math-and-cmath--cms-26913

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值