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. 定义一个等效的常规函数​​,该函数接受非符号参数并将其句柄传递给quad. 我会用一个匿名函数来做——只需用f = @(x, y)而不是开始你的定义f =,就是这样(还要记住它f现在是一个函数句柄,所以你不需要@在传递它时编写ampersat())。

于 2013-05-28T13:13:16.213 回答