0

私は数値法コースに従っており、台形法を使用して積分を計算するための小さな MATLAB スクリプトを作成しました。しかし、私のスクリプトは FOR ループを使用しており、私の友人は、Matlab で FOR ループを使用すると何か問題があると言いました。このスクリプトを Matlab に適したものに変換する方法はありますか?

%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
4

2 に答える 2

2

ベクトル化は速度と明瞭さが重要ですが、可能な限り組み込み関数を使用することも重要です。Matlab には、trapzと呼ばれる台形数値積分の組み込み関数があります。ここに例があります。

x = 0:.125:.5
y = exp(x)
F = trapz(x,y)
于 2013-05-19T05:55:43.230 に答える
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 が for loops で遅くなくなったことを読みました。

于 2013-05-19T05:36:53.750 に答える