積分のMATLAB関数にベクトル制限を使用することは可能ですか?プログラムの速度が速いため、forループを避ける必要があります。手がかりを教えてください
k=0:5
f=@(x)x^2
quad(f,k,k+1)
誰かが必要な場合、私は私の質問の答えを見つけました:ベクトル制限のあるクワッド
積分のMATLAB関数にベクトル制限を使用することは可能ですか?プログラムの速度が速いため、forループを避ける必要があります。手がかりを教えてください
k=0:5
f=@(x)x^2
quad(f,k,k+1)
誰かが必要な場合、私は私の質問の答えを見つけました:ベクトル制限のあるクワッド
私のquad
機能経験をもとに、お答えしていきます。
これから始めて:
k=0:5;
f=@(x) x.^2;
f
あなたの定義(正しくない)と私の定義(正しい)の違いに注意してください。
f
範囲内で統合するだけの場合は、(0,5)
簡単に呼び出すことができます
quad(f,k(1),k(end))
ハンドル機能がない場合、以下を使用することにより、異なる方法で同じ結果に到達する可能性がありますtrapz
。
x = 0:5;
y = x.^2;
trapz(x,y)
代わりに、入力する可能性のある狭い範囲で段階的な統合を実行することを意味する[k(i),k(i+1)]
場合
arrayfun(@(ii) quad(f,k(ii),k(ii+1)),1:numel(k)-1)
便宜上、次のことに注意してください。
sum(arrayfun(@(ii) quad(f,k(ii),k(ii+1)),1:numel(k)-1)) == quad(f,k(1),k(end))
これがお役に立てば幸いです。