integral2 error, bu the function works

1 visualización (últimos 30 días)
Xiangyu Meng
Xiangyu Meng el 10 de Feb. de 2017
Respondida: Carlos Guerrero García el 26 de Nov. de 2022
fun = @(x,y) 1-exp(-0.01*norm(x-y));
q = integral2(fun,0,1,0,1);
It gives me the following error:
Error using integral2Calc>integral2t/tensor (line 241)
Integrand output size does not match the input size.
Error in integral2Calc>integral2t (line 55)
[Qsub,esub] = tensor(thetaL,thetaR,phiB,phiT);
Error in integral2Calc (line 9)
[q,errbnd] = integral2t(fun,xmin,xmax,ymin,ymax,optionstruct);
Error in integral2 (line 106)
Q = integral2Calc(fun,xmin,xmax,yminfun,ymaxfun,opstruct);
Error in IntegrateTriangularRegionwithSingularityattheBoundaryExample (line 19)
q = integral2(fun,0,1,0,ymax)
The function fun is well defined and tested. Work for both scalar and vector.
How to make the integral work?
[SL: edited to format code]

Respuestas (2)

Steven Lord
Steven Lord el 10 de Feb. de 2017
What does the integral2 function require of the integrand function you specify as its first input?
"The function fun must accept two arrays of the same size and return an array of corresponding values. It must perform element-wise operations."
What does your function do?
fun = @(x,y) 1-exp(-0.01*norm(x-y));
x = 1:10;
y = x+1;
z = fun(x, y)
Is z the same size as x and y? I think something closer to what you want is:
fun = @(x,y) 1-exp(-0.01*abs(x-y));
x = 1:10;
y = x+1;
z = fun(x, y)
  2 comentarios
Xiangyu Meng
Xiangyu Meng el 10 de Feb. de 2017
I want to calculate the integral of the function fun in the planar [0,1]*[0,1].
Torsten
Torsten el 13 de Feb. de 2017
As Steven suggested, replace "norm" with "abs" in your function definition.
Best wishes
Torsten.

Iniciar sesión para comentar.


Carlos Guerrero García
Carlos Guerrero García el 26 de Nov. de 2022
A sketch of the function:
[x,y]=meshgrid(0:0.01:1); % The region in the statement
surf(x,y,1-exp(-0.01*abs(x-y))); % Plotting the surface
shading interp % For a nice view
and the integral can be calculated as follows:
syms x y; int(int(1-exp(-0.01*abs(x-y)),0,1),0,1)
ans = 

Categorías

Más información sobre Numerical Integration and Differentiation en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by