Multidimensional integration in matlab

I would like to integrate a multivariate function such as
over . Is there a built in function in matlab to do this? Expanding it to a function of , the components of x will be really tedious if the dimension is higher.

 Respuesta aceptada

Bjorn Gustavsson
Bjorn Gustavsson el 13 de Abr. de 2021

1 voto

Have a look at the help and documentation for integral2. That should be the function to do 2-D integrals, that sounds like the function you're looking for.
HTH

2 comentarios

Shunan Sheng
Shunan Sheng el 14 de Abr. de 2021
Editada: Shunan Sheng el 14 de Abr. de 2021
Thanks, I tried the integral2, but there are some problems. Here is the code:
clear all;
A=diag(ones(2,1));
func = @(x, y)(quadratic_form(x, y, A));
integral_value = integral2(func, -1,1,-1,1);
function value = quadratic_form(x, y, A)
x=reshape(x,[],1);
y=reshape(y,[],1);
mat = [x,y];
disp(size(mat));
value = diag(mat * A * mat');
disp(size(value))
end
In particular, we have error
Error using integral2Calc>integral2t/tensor (line 241)
Integrand output size does not match the input size.
Bjorn Gustavsson
Bjorn Gustavsson el 14 de Abr. de 2021
That is because your function is array-valued, and as far as I know integral2 doesn't handle that. You might have to evaluate the integral for each component separately.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Preguntada:

el 13 de Abr. de 2021

Comentada:

el 14 de Abr. de 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by