2010-04-02 69 views
0

我正在爲simpson的規則編寫一個Matlab程序當程序到達時,我總是收到一個關於很多輸出的錯誤left_simpson = Simpson(a,c,(e1)/2,level, level_max); settinf left_simpsonSimpson(a,c,(e1)/2,level, level_max);有什麼問題?問題在輸出太多的matlab中

function Simpson(a,b,e1,level, level_max) 


level = level + 1; 

h = b - a; 

c = (a+b)/2; 

one_simpson = h*(f(a) + 4*f(c) + f(b))/6; 

d = (a+c)/2; 

e = (c+b)/2; 

two_simpson = h*(f(a) + 4*f(d) + 2*f(c) + 4*f(e))/2; 

if level >= level_max 

    disp('h') 

    simpson_result = two_simpson; 

    disp('maximum levels reached') 

    disp(simpson_result); 

    if abs(two_simpson - one_simpson) < 15*e1 

     simpson_result = two_simpson + (two_simpson - one_simpson)/15; 

    else 
     left_simpson = Simpson(a,c,(e1)/2,level, level_max); 

     right_simpson = Simpson(c,b,(e1)/2,level, level_max); 

     simpson_result = left_simpson + right_simpson; 

    end 

end 
+1

密切相關:http://stackoverflow.com/questions/2429888/how-do-you-pass-in-a-value-to-a-subfunction-in-matlab-i-am-getting-output-錯誤 – mtrw 2010-04-02 08:00:39

回答

5

您的函數聲明,代碼中的第一行,沒有聲明Simpson返回的內容。我不知道Matlab如何做這樣的聲明。我認爲你應該重新寫辛普森來明確地返回一個值或值。看看如何做到這一點的Matlab文檔。

一旦你宣佈了辛普森的回報,那麼你可能會避免'太多輸出'的問題。

+2

如果函數沒有聲明輸出參數,它將不會輸出任何東西(除非它打開數字,打印到命令行,保存數據或寫入句柄對象) – Jonas 2010-04-02 11:49:28

+0

感謝您澄清@Jonas,我已經一直對Matlab進行編程,我忘記了,如果我知道的話,在我從不編碼的情況下會發生什麼。 – 2010-04-02 12:04:42