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.

 채택된 답변

Bjorn Gustavsson
Bjorn Gustavsson 2021년 4월 13일

1 개 추천

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

Shunan Sheng
Shunan Sheng 2021년 4월 14일
편집: Shunan Sheng 2021년 4월 14일
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 2021년 4월 14일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터 및 File Exchange에서 Numerical Integration and Differentiation에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by