python计算和差积商_Python与处理计算的区别
我目前正在進(jìn)行一些數(shù)值傳熱計(jì)算,這需要一個(gè)很好的互補(bǔ)誤差函數(shù)(erfc)的近似。其中一個(gè)傳熱方程由exp(s^2)和erfc(s)的乘積組成,這意味著(對(duì)于較大的s值)一個(gè)非常大的數(shù)乘以一個(gè)非常小的數(shù)。因此,電流變流控制的精度需要相當(dāng)高。否則,對(duì)大量s的計(jì)算將是不穩(wěn)定的。在
由于處理not的數(shù)學(xué)函數(shù)(例如sqrt()、exp()和pow())不能取雙倍數(shù),所以我使用float,這給了我對(duì)于大值s的穩(wěn)定性問題。對(duì)于大值,我的意思是大約4到5。例如,4.5的erfc應(yīng)該是1.97*10^(-10)。在
…現(xiàn)在來回答問題。在
1)是否可以在處理的數(shù)學(xué)函數(shù)(例如平方根、exp和冪)中使用雙精度來獲得互補(bǔ)誤差函數(shù)值的更精確表示?在
2)據(jù)我所知,Python也在使用float,而不是double,這意味著(至少在我看來)Processing和Python對(duì)于互補(bǔ)錯(cuò)誤函數(shù)應(yīng)該得到相同的結(jié)果。然而,事實(shí)并非如此。Python對(duì)錯(cuò)誤函數(shù)的逼近比處理更精確。怎么會(huì)這樣?在
下面顯示了Python和互補(bǔ)誤差函數(shù)近似的處理版本。在
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
總結(jié)
以上是生活随笔為你收集整理的python计算和差积商_Python与处理计算的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 带鸿的公司名字起名取名
- 下一篇: websocket python爬虫_p