integral2 error, bu the function works
1 次查看(过去 30 天)
显示 更早的评论
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]
0 个评论
回答(2 个)
Steven Lord
2017-2-10
"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 个评论
Torsten
2017-2-13
As Steven suggested, replace "norm" with "abs" in your function definition.
Best wishes
Torsten.
Carlos Guerrero García
2022-11-26
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)
0 个评论
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!