2015-07-06 129 views
0

我在編寫一個GENERALLY RECURSIVE函數時遇到了麻煩,該函數消耗了三個非負浮點數xlo,xhi和遵循上述想法的閾值,並生成f = 5x5-10x4 + xlo和xhi之間的5x2 + 30在數值上求解。具有閾值的Python積分梯形函數

如果xlo和xhi「足夠接近」,我們可以停止並近似曲線下的形狀。梯形是很好和簡單的近似。 「足夠近」的一個簡單定義是某個固定的x距離閾值,例如0.0001。

梯形的面積給定爲A =½* H *(B1 + B2)

到目前爲止我知道該函數將所述×10-XHI範圍劃分成兩個範圍×10-MID和中間-xhi然後遞歸地繼續每一半......當每個部分的當前xli-xhi小於閾值時停止。當每個部分的當前xli-xhi小於閾值時,則計算梯形的面積。

我不太清楚如何在沒有任何循環或迭代的情況下爲這個問題編寫遞歸函數。

回答

1

這樣的事情?

def trap(xlo, xhi, e): 
    diff = xhi-xlo 
    if diff > e : 
     return trap(xlo,xlo+diff/2) + trap(xlo+diff/2,xhi) 
    #actually calculate the trapezoidal area here. 
    ... 
    return result 
+0

我是否需要在else語句中計算梯形區域? –

+0

你可以,但回報將處理不會繼續爲你。 – moreON

+0

我添加了一個else語句:else: area = 0.5 * diff *(xlo + xhi) return area'然而,當我測試代碼時得到的答案是完全錯誤的 –