我有很大的功能可以整合:
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, ...
你能解释为什么会出现这些错误吗?我该如何解决?
答案 0 :(得分:4)
quad
函数系列不适用于符号数学。相反,您可以:
使用与int
的符号集成。要计算双积分,请连续两次调用int
,每次使用不同的积分变量。
定义一个接受非符号参数的等效常规函数,并将其句柄传递给quad
。我是用匿名函数来做的 - 只需用f = @(x, y)
而不是f =
开始你的定义,就是这样(也记得f
现在是一个函数句柄,所以你不要传递它时需要编写ampersat(@
)。