2011-12-06 61 views
0

我想用我的基本梯形算法來整合「\ int_ {0}^{1}(exp(-int_ {0}^{y} f(x)dx))dy」。我收到一個錯誤聲明,但我應該將g定義爲函數。你有什麼想法如何做到這一點? 非常感謝任何答案!trapezodial rule matlab

function y = trapapadbl(low1, up1,low2,up2,intstep1,intstep2,f) 
g = 0; 
step1 = (up1 - low1)/intstep1; 
step2 = (up2 - low2)/intstep2; 

for j = low1 : step1 : up1 
    g = g + feval(f,j); 
end 
g = @(y)(g - (feval(f, low1) + feval(f, up1))/2) * step1; 
for i = low2 : step2 : up2 
    y= y + feval(g,i); 
end 
y= (y - (feval(g, low2) + feval(g, up2))/2) * step2; 
+2

您能否提供示例調用? – petrichor

+1

你也可以顯示錯誤信息嗎? – Oli

+1

tesekkurler @İsmailArı:)我想要評估的是例如int_ {0}^{2} int_ {0}^{y} exp(x)dx dy =?我在編程方面經驗不足,但我認爲我應該爲內積分定義一個函數。 「如何」實際上是我的問題? tesekkürlertekrar ... – user1018331

回答

2
>> trapapadbl(0,1,0.1,0,1,0.1,@sin) 

??? Undefined function or variable "y". 

Error in ==> trapapadbl at 12 
    y= y + feval(g,i); 

沒有工作太辛苦,試圖理解你的代碼(!)的錯誤是y從未初始化。您不能添加任何東西到y,直到它有一個值。當我將y初始化爲0時,代碼會運行,但我得到0作爲輸出,當您將sin從0整合到1時不會發生什麼情況。我可能調用了錯誤的函數,但這是需要注意的!

此外,您的代碼很混亂,因爲您使用變量g作爲雙(數字)和函數,即使在同一行中!同樣的問題發生在y是您的匿名函數的輸入,但也是以後的兩倍。它在語法上是正確的,但有點難以閱讀。考慮使用不同的變量名稱,或者包括明確的註釋(或兩者兼有!)

+0

謝謝@alexplanation!現在我發現我的問題也有點混亂:) – user1018331