0

たとえば、ループ内のクワッドなど、MATLAB数値積分関数を使用しようとしています。しかし、matlabにいくつかの積分限界の積分を計算させたいと思います。

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

本当に賢いようです:)しかしMatlabにはアイデアがありません:(助けてくれてありがとう!mg

4

2 に答える 2

2

あなたが抱えている主な問題はp、パラメーターとして、また統合の結果を保存するために両方を使用していることだと思います。そのため、ループ内ではpベクトルになり、被積分関数で累乗として使用できません。理由はわかりませんが、andkへのインデックスとして削除する必要があるようです。しかし、このコードはうまくいくようです:bintegrand

p=1;
q=3;
for k=1:5
    a=0;
    b=k.*10;
    integrand=@(v)((v-a).^(p-1).*(b-v).^(q-1));
    result(k)=quad(integrand,a,b);
end
于 2011-11-10T09:58:08.003 に答える
0

追加のパラメーターを使用して被積分関数を定義できるように見えるので、

p=1;
q=3;
integrand=@(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{:});

あなたが何をしようとしているのか正確にはわかりませんが...

于 2011-11-10T09:35:14.543 に答える