0

quadgk関数を使用して内部積分と外部積分の両方を解いている二重積分を解こうとしています。

% The integrand is of course a function of both x and y
integrand = @(x,y) (phi(j,y,X) - phi(j,x,X))*(phi(i,y,X) - phi(i,x,X))/abs(y-x)^(2*s+1)

% The inner integral is a function of x, and integrates over y
inner = @(x) quadgk(@(y)integrand(x,y), x-lambda, x+lambda)

% The inner integral is integrated over x to yield the value of the double integral 
dblIntegral = quadgk(inner, -(1+lambda), 1+lambda)

次のエラーが表示されます。

integrand = @(x,y)(phi(j,y,X)-phi(j,x,X))*(phi(i,y,X)-phi(i,x,X))/abs(y-x)^(2*s+1)
inner = @(x)quadgk(@(y)integrand(x,y),x-lambda,x+lambda)

??? Error using ==> quadgk at 108
A and B must be scalar floats.

Error in ==> @(x)quadgk(@(y)integrand(x,y),x-lambda,x+lambda)
Error in ==> quadgk>evalFun at 344
        fx = FUN(x);

Error in ==> quadgk>f1 at 362
    [y,too_close] = evalFun(tt);

Error in ==> quadgk>vadapt at 258
        [fx,too_close] = f(x);

Error in ==> quadgk at 197
[q,errbnd] = vadapt(@f1,interval);

Error in ==> frational_laplacian at 29
dblIntegral = quadgk(inner, -(1+lambda), 1+lambda)
4

1 に答える 1

0

quadgk値のベクトルを使用して渡された関数を内部的に評価するため、この問題が発生しています。これは、行で

dblIntegral = quadgk(inner, -(1+lambda), 1+lambda)

関数innerは x がベクトルで呼び出されています。quadgka と b (この場合は x±lambda) がスカラーである必要があるため、これまで見てきたエラーが発生します。が常に入力としてスカラーを取得するようにしたい場合はinner、次を使用できます

dblIntegral = quadgk(@(x)arrayfun(inner,x), -(1+lambda), 1+lambda)
于 2013-10-22T08:54:14.730 に答える