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.

 Réponse acceptée

Bjorn Gustavsson
Bjorn Gustavsson le 13 Avr 2021

1 vote

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 commentaires

Shunan Sheng
Shunan Sheng le 14 Avr 2021
Modifié(e) : Shunan Sheng le 14 Avr 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 le 14 Avr 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by