2013-02-21 35 views
0

我是Python新手,學習遵循Python「科學講義 Rlease 2013.1」教程。 請幫我解決下面srcreenshot中的這個三重一體化問題(第70頁)。我已經介紹了該教程的以前的內容。 如果可能的話,請提供步驟明確的命令和解釋,因爲作爲航空航天工程師編程概念對我而言是新的。與Python/Numpy/Scipy的三重集成

謝謝。

http://dl.dropbox.com/u/50511173/Untitled.png

練習:粗積分近似值 寫函數f(A,B,C)返回一個^ B - ℃。在參數 範圍[0,1] x [0,1] x [0,1]中形成一個包含其值的24x12x6陣列。

回答

1

這似乎令人生畏,但問題一步一步告訴你該怎麼做。

撰寫函數f(a, b, c)返回a^b-c

def f(a, b, c): 
    return a ** b - c 

形成包含其參數24x12x6陣列範圍[0,1] x [0,1] x [0,1]。給你提示ogrid提示。所以,讀我猜的文檔的樣子:

x = np.ogrid[0:1:24j, 0:1:12j, 0:1:6j] 

然後你可以做

f(x[0], x[1], x[2]) 

並採取再取平均

np.mean(f(x[0], x[1], x[2])) 

這給了我0.18884234602967925

+0

非常感謝,我對使用ogrid函數感到困惑,並誤解了函數。如果沒有附加的軸參考語句,可以按如下方式工作:def f(a,b,c): \t返回a ** b -c; a,b,c = np.ogrid [0:1:24j,0:1:12j,0:1:6j]; np.mean(F(A,B,C)) – nilesh 2013-02-21 11:14:18

1

你誤解了這個問題。他們不要求你計算積分。他們要求你在一組點上計算該函數的平均值。這個練習的動機是這個意思將是該積分值的近似值。

所有你需要做的就是形成他們請求的數組,用24x12x6的值,將所有這些值相加,然後除以該數組中的元素數。

+0

非常感謝。我誤解了這個問題,並試圖實現scipy intergrate函數,因爲我不明白ogrid函數部分。可以使用這種方法並使用更高的descretization(numpy.ogrid [start:end:j]中的j值)來解決各種類似的積分問題嗎? – nilesh 2013-02-21 11:12:18

+1

並非總是如此。它將在這種情況下工作,因爲您正在計算單位體積中的積分:積分域[0,1] x [0,1] x [0,1]的體積爲1,這就是爲什麼平均值是近似值的積分。如果你的音量是X,你可以近似X的平均值。 – HerrKaputt 2013-02-21 15:08:11