Problem in 2 dimensional numerical integration
조회 수: 1 (최근 30일)
이전 댓글 표시
I am trying to integrate a function of the form
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/269125/image.png)
for the domain
, where
and
are fixed constants, i.e.,
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/269126/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/269127/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/269128/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/269129/image.png)
For this I have used the code:
y1 = 10; y2 = 20;
B = @(x1,x2) ( y1.*del(x1-y1).*heaviside(y2-y1) + y2.*del(x2-y2).*heaviside(y1-y2) )./(y1.*y2);
integral2(B,0,y1,0,y2)
where 'del' is the dirac delta function defined below:
%% definiiton of del
function retval = del(x)
if x==0
retval = 1;
else
retval = 0;
end
return
Now if I run the main code, it gives 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 test (line 4)
integral2(B,0,y1,0,y2)
Any suggestions?
댓글 수: 0
답변 (1개)
David Goodmanson
2020년 1월 31일
Hi Ashok,
you can make a decent case that the answer is 1/2, at least if the variables are continuous. For the first term,
Int{0,y1} delta(x1-y1) dx1 = 1/2
Int{0,y2} dx2 = y2
so the first term is
(1/2) H(y2-y1)
Likewise, the second term is
(1/2) H(y1-y2)
and the whole thing is
(1/2)( H(y2-y1)+H(y1-y2)) = 1/2
댓글 수: 4
David Goodmanson
2020년 2월 1일
If that's the case, can't you basically do the delta function part of the integrals by hand first, or are there too many delta functions in your expressions for that to be feasible? (and I still like 1/2)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!