Double integral on array
16 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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!
0 commentaires
Réponses (1)
Star Strider
le 11 Juil 2016
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 commentaires
Star Strider
le 11 Juil 2016
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.
Voir également
Catégories
En savoir plus sur Numerical Integration and Differentiation dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!