python计算和差积商_Python与处理计算的区别

我目前正在进行一些数值传热计算,这需要一个很好的互补误差函数(erfc)的近似。其中一个传热方程由exp(s^2)和erfc(s)的乘积组成,这意味着(对于较大的s值)一个非常大的数乘以一个非常小的数。因此,电流变流控制的精度需要相当高。否则,对大量s的计算将是不稳定的。在

由于处理not的数学函数(例如sqrt()、exp()和pow())不能取双倍数,所以我使用float,这给了我对于大值s的稳定性问题。对于大值,我的意思是大约4到5。例如,4.5的erfc应该是1.97*10^(-10)。在

…现在来回答问题。在

1)是否可以在处理的数学函数(例如平方根、exp和幂)中使用双精度来获得互补误差函数值的更精确表示?在

2)据我所知,Python也在使用float,而不是double,这意味着(至少在我看来)Processing和Python对于互补错误函数应该得到相同的结果。然而,事实并非如此。Python对错误函数的逼近比处理更精确。怎么会这样?在

下面显示了Python和互补误差函数近似的处理版本。在

Python:from math import sqrt

from math import pi

from math import exp

n=1000 #number of intervals

b=float(1) #integration end

h=b/n #Interval width

leftRiemann=0

for s in range(0, n):

leftRiemann=leftRiemann+h*2/sqrt(pi)*exp(-((s*h)**2))

rightRiemann=0

for s in range(1, n+1):

rightRiemann=rightRiemann+h*2/sqrt(pi)*exp(-((s*h)**2))

trapez=0.5*leftRiemann+0.5*rightRiemann

centrePoint=0

for s in range(1, n+1):

centrePoint = centrePoint+h*2/sqrt(pi)*exp(-((h*(s-0.5))**2))

erfc=1 - (1.0/3*trapez+2.0/3*centrePoint)

print erfc

正在处理:

^{pr2}$

Python:erfc(1)=0.15729920705

处理:erfc(1)=0.15729982

表值:erfc(1)=0.157299

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值