Double integral on array
이전 댓글 표시
I have a function dependent on both xp and t, which I need integrated over a meshgrid of X,Z. This is a slightly simplified version of the equation:
z=-0.000150:0.000005:0;
x=0.000300:0.000005:0.000100;
[X,Z]=meshgrid(x,z);
syms xp
syms t
F=@(xp,t) ((1/t).*(exp((-1).*(((X-xp).^2)+(Z.^2))/(4.*t))));
I need to integrate t between 0 and 0.0002, and xp between 0 and 0.000100 across the X,Z array. I know I can make a single integral ArrayValued, but I can't work out the best way to do the double integral. All suggestions welcome! Thanks!
답변 (1개)
Star Strider
2016년 7월 11일
I would just use trapz:
z=-0.000150:0.000005:0;
x=0.000300:-0.000005:0.000100;
[X,Z]=meshgrid(x,z);
F=@(xp,t) ((1./t).*(exp((-1).*(((X-xp).^2)+(Z.^2))./(4.*t))));
Fmtx = F(X,Z); % Create Matrix
Fint = trapz(trapz(~(isnan(Fmtx)))); % Integrate
To use the Symbolic Toolbox, the correct function is int, not integral.
댓글 수: 3
Torsten
2016년 7월 11일
I thought xp and t were the variables of integration whereas X and Z were constants ...
But maybe I'm mistaken.
Best wishes
Torsten.
Felicity Freeman
2016년 7월 11일
Star Strider
2016년 7월 11일
For 'ArrayValued' to work, the integrand has to be an actual array.
For example:
A = @(x,y) [x,x+y;x-y,y];
Q = integral(@(y) integral(@(x)A(x,y) ,0,2, 'ArrayValued',true), 3,5, 'ArrayValued',true)
That works.
카테고리
도움말 센터 및 File Exchange에서 Numerical Integration and Differentiation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!