为什么会出现这些错误? quad2d,dblquad

时间:2013-05-28 13:02:05

标签: matlab integral

我有很大的功能可以整合:

  
    

syms x y

         

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, ...

你能解释为什么会出现这些错误吗?我该如何解决?

1 个答案:

答案 0 :(得分:4)

quad函数系列不适用于符号数学。相反,您可以:

  1. 使用与int的符号集成。要计算双积分,请连续两次调用int,每次使用不同的积分变量。

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