2013-05-19 94 views
0

我遵循一個數值方法課程,我製作了一個小型MATLAB腳本,用梯形法計算積分。然而,我的腳本使用FOR循環,我的朋友告訴我,如果我在Matlab中使用FOR循環,我會做錯的事情。有沒有辦法將這個腳本轉換爲一個Matlab友好的腳本?MATLAB中梯形數值積分不使用FOR循環?

%Number of points to use 
N = 4; 

%Integration interval 
a = 0; 
b = 0.5; 

%Width of the integration segments 
h = (b-a)/N; 


F = exp(a); 
for i = 1:N-1 
    F = F + 2*exp(a+i*h); 
end 
F = F + exp(b); 
F = h/2*F 

回答

0

建議向量化您的代碼。

%Number of points to use 
N = 4; 

%Integration interval 
a = 0; 
b = 0.5; 

%Width of the integration segments 
h = (b-a)/N; 

x = 1:1:N-1; 

F = h/2*(exp(a) + sum(2*exp(a+x*h)) + exp(b)); 

但是,我讀過Matlab is no longer slow at for loops

2

矢量化是重要的速度和清晰度,但也是儘可能使用內置函數。 Matlab有一個內置的梯形數值積分函數,稱爲trapz。這是一個例子。

x = 0:.125:.5 
y = exp(x) 
F = trapz(x,y)