当前位置: 首页 > 工具软件 > mpmath > 使用案例 >

mpmath.psi python_【Python Package】mpmath学习笔记(2)

梁华清
2023-12-01

六、常用函数

fadd(x,y,**kwargs)

作用:实现精度要求下的加法运算。

from mpmath import *

print(fadd(1, 1e-10)) #1+1e-10,精度没有损失

>>>1.0000000001

print(fadd(1, 1e-20)) #1+1e-20,精度有损失

>>>1.0

nprint(fadd(1, 1e-20, dps=20), 21) #1+1e-20,指定保留20位有效数字,精度没有损失。nprint输出21位数

>>>1.00000000000000000001

nprint(fadd(1, 1e-20, prec=70), 21) #1+1e-20,指定保留70字节,精度没有损失。nprint输出21位数

>>>1.00000000000000000001

nprint(fadd(1, 1e-20, prec=20), 21) #1+1e-20,指定保留20字节,精度有损失。nprint输出21位数,但被省略

>>>1.0

nprint(fadd(1, 1e-20, rounding='u'), 22)#1+1e-20,指定以'up'的方式进行rounding(数值修约),具体待老夫翻翻数值分析

>>>1.000000000000000444089

nprint(fadd(1, 1e-20, exact=True), 21) #1+1e-20,指定保留精确值,精度没有损失。nprint输出21位数

>>>1.00000000000000000001

下面函数的精度调节方法与 fadd 相似,不再赘述。

fsub(x,y,**kwargs)

作用:实现精度要求下的减法运算。

用法同上,略fneg(x,**kwargs)

作用:实现精度要求下的相反数运算。

用法同上,略

fmul(x,y,**kwargs)

作用:实现精度要求下的乘法运算。

用法同上,略

fdiv(x,y,**kwargs)

作用:实现精度要求下的除法运算。

用法同上,略

fmod(x,y)

作用:实现精度要求下的同余运算。

from mpmath import *

print(fmod(34, 3)) #求34除以3的余数

>>>1.0

print(fmod(12.154, 1)) #求12.154除以1的余数,即小数部分

>>>0.154

fsum(terms,absolute=False,squared=False)

作用:实现连续求和运算。

关于精度:

from mpmath import *

print(fsum([1, 2, 3])) #对1,2,3进行连续求和

>>>6.0

print(fsum([1, 2, 3, 1e-10])) #对1,2,3,1e-10进行连续求和,精度没有损失

>>>6.0000000001

print(fsum([1, 2, 3, 1e-20])) #对1,2,3,1e-20进行连续求和,精度有损失

>>>6.0

mp.dps = 23 #fsum函数不自带精度调整功能,要通过mp对象调节,此处设定23位有效数字

print(fsum([1, 2, 3, 1e-20])) #对1,2,3,1e-20进行连续求和,精度没有损失

>>>6.00000000000000000001

关于求和:

from mpmath import *

print(fsum([1, 2, 3])) #对1,2,3求和

>>>6.0

print(fsum([1, -2, 3], absolute=True)) #对1,2,3求绝对值和

>>>6.0

print(fsum([1, -2, 3], squared=True)) #对1,2,3求平方和

>>>14.0

fprod(factors)

作用:实现连续求积运算。

from mpmath import *

print(fprod([1, 2, 3])) #对1,2,3求积

>>>6.0

fdot(A,B=None,conjugate=False)

作用:实现两个数组的点乘运算。

from mpmath import *

print(fdot([1, 2, 3], [1, 2, 3])) #(1,2,3)*(1,2,3)

print(fdot([1, 2, 3], [1+j, 2+j, 3+j], conjugate=False)) #(1,2,3)*(1+i,2+i,3+i)

print(fdot([1, 2, 3], [1+j, 2+j, 3+j], conjugate=True)) #(1,2,3)*(1-i,2-i,3-i)

fabs(x)

作用:实现绝对值或模运算。

用法略。

sign(x)

作用:实现符号运算。

用法略。

re(x) 和 im(x)

作用:实现提取实部或虚部的运算。该作用可被mpcObject.real 或者mpc.Object.imag代替。

用法略。

arg(x)

作用:实现求取复数转角的运算。

用法略。

conj(x)

作用:实现复数共轭运算。

用法略。

rect(x)

作用:实现根据极坐标得到复数的运算。

from mpmath import *

print(rect(2,0.3*pi)) #求 rho=2,cita=0.3*pi对应的复数

>>>1.17557050458495 + 1.61803398874989j

floor(x)

作用:实现下取整运算。

用法略。

ceil(x)

作用:实现上取整运算。

用法略。

nint(x)

作用:实现四舍五入操作。

用法略

frac(x)

作用:实现求小数部分运算。

用法略。注意正负数的小数部分不相同。

chop(x,tol=None)

作用:实现在容忍度内切断尾数的操作

from mpmath import *

print(chop(5+1e-10j, tol=1e-9)) #在容忍度为1e-9的前提下,切断5+1e-10的尾数

>>>5.0

isinf(x)

作用:实现判断是否为无穷的运算。

用法略。

isnan(x)

作用:实现判断是否为非数的运算。

用法略。

isnormal(x)

作用:实现判断是否为正常浮点数的运算。

该函数将0,NaN和Inf视作不正常,其余正常。

isint(x,gaussian=False)

作用:实现判断是否为整数的运算。

当gaussian=True时,整数的标准变为高斯整数。

rand()

作用:实现生成一个服从[0,1]区间均匀分布的随机数的运算。

用法略。

arange(*args)

作用:生成整数数组的运算。注意,当参数长度为2时,生成整数数组的标准是前含后不含。

from mpmath import *

print(arange(10)) #生成0~9的浮点数数组

print(arange(10.5)) #生成0~10的浮点数数组

print(arange(4, 10)) #生成4~9的浮点数数组

linspace(*args,**kwargs)

作用:生成等差数列的运算。三个参数依次分别是首项,末项和项数。

from mpmath import *

print(linspace(1, 4, 4)) #生成从1到4的四等分数列

>>>[1.0, 2.0, 3.0, 4.0]

print(linspace(1, 4, 4, endpoint=False)) #生成从1到4的五等分数列,不含尾点4

>>>[1.0, 1.75, 2.5, 3.25]

 类似资料: