
triple integral of parametrized function
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Bill Francois
le 6 Mai 2015
Réponse apportée : Mike Hosea
le 7 Mai 2015
Hi
I would like to numerically compute the integral of a parametrized function to use it as a function of the parameter. Is this possible? (I know it works with a simple integral, but in the Help folder of integral3, they assign a value to the parameter BEFORE computing the integral so they do not get a function of the parameter in the end).
My function is the following one:
fun1 = @(k,e,x,y,z)((e.*psf(x,y,z)).^k).*exp(-e.*psf(x,y,z))/factorial(k)
Where psf is a function of x, y , z: @(x,y,z)exp(-2*(x.^2+y.^2)-2*z.^2) (a 3D Gaussian)
I would like to get the triple integral of fun1 between the limits -100 and 100 for x,yamd z (for example; the best woul be for me to be able to tune the limits of the integral) and use it as a function of k (which is a natural integer), to plot it for various values of e.
Thanks in advance
Bill
0 commentaires
Réponse acceptée
Mike Hosea
le 7 Mai 2015
Something like this?
psf = @(x,y,z)exp(-2*(x.^2+y.^2)-2*z.^2);
fun1 = @(k,e,x,y,z)((e.*psf(x,y,z)).^k).*exp(-e.*psf(x,y,z))/factorial(k);
% Make a function that takes a scalar k and a scalar e and returns the
% integral. Can use -100,100 limits (faster), or expressions involving k.
% Can use different tolerances.
scalar_k_scalar_e_fun = @(k,e)integral3(@(x,y,z)fun1(k,e,x,y,z),-inf,inf,-inf,inf,-inf,inf,'Abstol',1e-4,'RelTol',1e-3);
% Make the latter function work with an array input for e, to facilitate
% plotting.
scalar_k_array_e_fun = @(k,e)arrayfun(@(e)scalar_k_scalar_e_fun(k,e),e);
e = 0:0.1:1;
k = 3:5;
q = zeros(length(k),length(e));
for i = 1:length(k)
q(i,:) = scalar_k_array_e_fun(k(i),e);
end
hold on
for i = 1:length(k)
plot(e,q(i,:));
end
hold off

0 commentaires
Plus de réponses (1)
Walter Roberson
le 6 Mai 2015
No, you cannot do that numerically. There is a possibility that you could do it symbolically, but it would be common that no closed-form integral existed.
At the time you do numeric integration, all variables must be assigned particular values, with the particular x, y, z to integrate at being the only free variables. There is no way to produce a formula out of numeric integration. And that's what you seem to be wanting to do, produce a formula that has k as a free variable. If you want a formula output, then you need symbolic integration.
Voir également
Catégories
En savoir plus sur Numerical Integration and Differentiation dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!