0

統合する巨大な機能があります:

シムズXY

f=(228155022448185.*(cos((2.*pi).*y)./exp(131738205584307./(35184372088832*x)) - 1)*(cos((8.*pi.*y)/ exp(131738205584307./(8796093022208*x)) - 1)*(cos((8.*pi.*y)/exp(131738205584307./(8796093022208.*x)) + cos((18.*pi) .*y)/exp(1185643850258763./(35184372088832.*x)) - 2))/((18014398509481984. *(x.^2)).*exp(x. * ((1981232555272083.*(y.^)) 2))/2251799813685248 - y./16 + 1./16)))

(x:[0,inf) と y:[0,1]) を統合する必要がありますが、quad2d と dblquad でエラーが発生します。

quad2d(quadfun,0,100,0,1)

??? Error using ==> quad2d>tensor at 350
Integrand output size does not match the input size.
Error in ==> quad2d at 164
[Qsub,esub] = tensor(thetaL,thetaR,phiB,phiT);
and

dblquad(quadfun,0,100,0,1)     

     ??? Error using ==> dblquad>innerintegral at 74
      Inputs must be floats, namely single or double.
    Error in ==> quad at 76
    y = f(x, varargin{:});

Error in ==> dblquad at 53
Q = quadf(@innerintegral, ymin, ymax, tol, trace, intfcn, ...

これらのエラーが表示される理由を説明していただけますか? どうすれば修正できますか?

4

1 に答える 1

4

関数ファミリは記号演算ではquad機能しません。代わりに、次のいずれかを実行できます。

  1. との記号積分を使用しintます。二重積分を計算するにはint、毎回異なる積分変数を使用して 2 回連続して呼び出します。

  2. 非シンボリック パラメータを受け入れ、そのハンドルを に渡す同等の正規関数を定義しますquad。私は匿名関数でそれを行います - のf = @(x, y)代わりに, で定義を開始するだけです (これは関数ハンドルであるため、渡すときにアンパサット ( ) を記述する必要がないことf =も覚えておいてください)。f@

于 2013-05-28T13:13:16.213 に答える