python计算和差积商_Python与处理计算的区别
我目前正在進行一些數值傳熱計算,這需要一個很好的互補誤差函數(erfc)的近似。其中一個傳熱方程由exp(s^2)和erfc(s)的乘積組成,這意味著(對于較大的s值)一個非常大的數乘以一個非常小的數。因此,電流變流控制的精度需要相當高。否則,對大量s的計算將是不穩(wěn)定的。在
由于處理not的數學函數(例如sqrt()、exp()和pow())不能取雙倍數,所以我使用float,這給了我對于大值s的穩(wěn)定性問題。對于大值,我的意思是大約4到5。例如,4.5的erfc應該是1.97*10^(-10)。在
…現(xiàn)在來回答問題。在
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
總結
以上是生活随笔為你收集整理的python计算和差积商_Python与处理计算的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 带鸿的公司名字起名取名
- 下一篇: python中的os操作文件,文件路径