我目前正在Mathematica中進行一些與量子力學相關的計算。正如我們從一維到二維晶格模型移動,問題大小成爲問題在Mathematica中優化內循環計算
目前,我們有一個總結,看起來是這樣的:
corr[r1_, r2_, i_, j_] = Sum[Cos[f[x1, x2] Angle[i] r1 + f[y1, y2] Angle[j] r2], {x1, HL}, {x2, HL}, {y1, HL + 1, 2 HL}, {y2, HL + 1, 2 HL}];
F [。 ,]是預先計算的相關函數的查找函數,並且也預先計算Angle [。]。
根本沒有辦法以任何方式進一步簡化。我們已經通過將復指數(具有零虛部)轉換爲上面的餘弦表達式進行了簡單的優化。
最大的問題是那些HL的尺寸是基於尺寸的:對於沿軸線的線性尺寸L,HL對應於L^d(這裏d = 2)。所以我們的計算在現實中是O(n^8),忽略了對i,j的求和。
對於L = 8,這通常不會太壞,如果它不是因爲我們對r1的125個值和r2的125個迭代來創建125 x 125圖像的事實。
我的問題是:如何在Mathematica中最有效地計算這個值?我會用另一種語言來做到這一點,但是有一些問題會使得它像C++一樣嘗試時會變得很慢。
附加信息:這是一個ND-ND(數字密度)相關性計算。所有的x和y都是指離散的2D網格上的分散點。這裏唯一不離散的東西就是我們的r。
你只是試圖計算一個相關性?在我看來,你需要找到一個體面,流行,經過充分測試的庫(不一定是Mathematica),你可以從你的代碼中調用。至於切換語言 - 不要跳轉到C++,請切換到Python + SciPy。 http://www.scipy.org/Cookbook/SchrodingerFDTD – 2010-07-14 15:26:40
HL是否從一個圖像變爲另一個圖像? – 2010-07-14 15:48:47
具有數字定義的'f'和'Angle'函數是符號的嗎?用數字方式做事可以產生巨大的影響。 OTOH,考慮到你的問題的大小,可能是你遇到了麻煩。我們在這裏討論〜10^17的操作。 – Pillsy 2010-07-14 16:20:15