2011-11-10 3 views
0

私はループ内のquadなど、matlabの数値積分関数を使用しようとしています。しかし、私はまた、MATLABは、いくつかの整数の限界のための私の積分を計算するようにしたい:ループ内でのmatlab quadrature

p=1; 
q=3; 
for k=1:5 
    a=0; 
    b(k)=k.*10; 
    integrand(k)[email protected](v)(v-a).^(p-1).*(b(k)-v).^(q-1); 
p(k)=quad(integrand,a,b(k)); 
end 

それは本当に賢い私に思える:)が、MATLABはないアイデアを持っていない:( は、任意の助けてくれてありがとう mgの

答えて

2

私はあなたが持っている主な問題は、あなたがパラメータとしてpの両方を使用していて、また、あなたの統合の結果を格納するということだと思います。したがって、ループ内でpはベクトルになり、被積分関数では動力として使用できません。理由はわかりませんが、bintegrandのインデックスとしてkを削除する必要があるようです。しかし、このコードは動作するようです:

p=1; 
q=3; 
for k=1:5 
    a=0; 
    b=k.*10; 
    [email protected](v)((v-a).^(p-1).*(b-v).^(q-1)); 
    result(k)=quad(integrand,a,b); 
end 
+0

ありがとう、私はそれが私の問題だったと思う:) – user1018331

0

!あなたは、余分なパラメータでそう

p=1; 
q=3; 
[email protected](v,b)(v-a).^(p-1).*(b-v).^(q-1); 
for k=1:5 
    a=0; 
    b=k.*10; 
    p(k)=quad(integrand,a,b); 
end 

を積分を定義することができますように思えるが、私は実行すると、それはまだエラーを与える:

??? Error using ==> power 
Matrix dimensions must agree. 

Error in ==> @(v,b)(v-a).^(p-1).*(b-v).^(q-1) 

Error in ==> quad at 76 
y = f(x, varargin{:}); 

ないあなたがが何をしようとして正確に確認してください...

関連する問題