
triple integral of parametrized function
1 view (last 30 days)
Show older comments
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 Comments
Accepted Answer
Mike Hosea
on 7 May 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 Comments
More Answers (1)
Walter Roberson
on 6 May 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.
See Also
Categories
Find more on Calculus in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!