2011-08-28 89 views
0

我的問題有兩個部分。一:我要做一個二重積分的網格上將計算的函數存儲到磁盤以便在python中快速訪問

answer = integrate ( f(x,y) times besselfunction(x,y)) 

現在,我已經讀了貝塞爾函數可以預先計算並保存到磁盤以便快速訪問。我該怎麼做呢?現在,我正在評估從scipy.special besselfunction,因爲它是必需的。第二個問題:我已經數值地整合了一個微分方程,並且我使用了splined方法來求解其他微分方程組。但是花鍵解決方案很慢。有沒有辦法讓這個更快?

回答

0

您似乎在尋找磁盤上的memoization解決方案。
您或許可以創建一個memoization裝飾器,它使用berkeleydb將迄今爲止計算出的所有函數調用的結果存儲到磁盤上(如果可以將生成的berkeleydb文件保存到每臺運行程序的機器上,並且不介意它變爲真的很大,你需要計算給定的一組參數的函數只有一次...我不知道這是否是一個好主意,但你在這裏做什麼)雖然)
谷歌搜索「memoize裝飾磁盤「似乎會爲您的問題帶來一些有趣的解決方案。
這一個特別看起來有點看好 - http://www.stanford.edu/~pgbovine/incpy.html

+0

我應該提到,我對python知之甚少。我看着敏捷。如果我安裝了incpy,是否意味着任何新的python程序都會自動運行(我不希望這樣),並且我讀它不能用於numpy數組。我想像我所追求的是人們經常想要做的事情 – alifranco

+0

我沒有沉迷於自己,但是閱讀那個頁面,我看到incpy自帶了可執行文件(Incpy/python.exe),所以只會運行當你調用這個可執行文件時,它似乎不會覆蓋你的機器上的默認python可執行文件,所以我認爲你在那個前端安全 –

+0

該頁面似乎說它會與numpy一起工作,對不起聽到你找到一些問題 –