2

特定の関数の積分を計算することを目的としたプログラムをMatlabで作成しました。積分には台形法を使うことになっています。現時点では、コードは次のようになっています。

a=0; b=2.5; n=2; % n is the number of intervals
h=(b-a)/n; %the width of every interval
x=a:h:b
y=labb2uppg1Funkfil(x)
trapets=h*(sum(y)-(y(1)+y(length(y)))/2)
plot(x,y) 

% This is located in a different file named labb2uppg1Funkfil
function y = funk(x)
y = exp(-x/3)/(2-cos(pi*x));

問題は、私の関数がyの単一の値を返すのは、それがもう少しあるはずなのにだけだということだと思います。複数の値を返すように関数を書き直すにはどうすればよいですか?それとも、ここで間違っているのは何か他のものですか?

前もって感謝します!終わり

4

2 に答える 2

3

./行列除算()の代わりに要素ごとの除算()を使用する必要があります/ここにドキュメント。

y = exp(-x/3) ./ (2-cos(pi*x));

また、関数とファイル名を同じにすることを強くお勧めします。どちらも「labb2uppg1Funkfil」または「funk」である必要があります。

于 2013-02-13T14:30:07.987 に答える
3

@DanilAsotskyはRigthです。挿入するすべてのxに対して関数がayを返すようにする場合は、要素ごとの操作を行うように関数を書き直す必要があります。

function y = funk(x)
y = exp(-x./3)./(2-cos(pi.*x));

仕事をしますか

于 2013-02-13T14:30:36.333 に答える