MATLAB How can I use MATLAB to solve double integrals?

  • Thread starter Thread starter Moly
  • Start date Start date
  • Tags Tags
    Integrals Matlab
AI Thread Summary
The discussion centers on using MATLAB to solve a double integral, specifically the integral of e^{-x^2} with variable limits. The user initially struggles with setting up nested loops for the integration due to the upper limit of the inner integral being dependent on the outer variable. They share their initial code, which incorrectly calculates the integral as 24.8427 instead of the expected 0.316. After revising their approach and increasing the number of steps in the trapezoidal rule, they achieve the correct result but question whether their method was valid. The conversation emphasizes the importance of correctly implementing variable limits in nested loops for accurate numerical integration.
Moly
Messages
20
Reaction score
0
Hi Everyone.

I would like to integrate the following using matlab:
\int_0^1 ~\int_0^x e^{-x^2} ~dy ~dx
looks pretty simple but don't know how to set up the embedded for loops for the integral with in the integral especially that the upper limit of the inner integral is x and not a number.
My actual assignment is much more complicated than this but i thought trying to work it out for a simpler function might help me with the more complex one.
Thanks for your help
 
Physics news on Phys.org
the program that i put together is giving me the integral=24.8427 and the answer is actually 0.316... my program is copied below, what am i doing wrong:

x0=0; xt=1; xstep=11; dx=1/(xstep-1);
y0=0; yt=1; ystep=11; dy=1/(ystep-1);

sum2=0;
for i1=1:xstep
sum1=0;
y=(i1-1)*dy;
x2step=floor(y*xstep);
for i=1:xstep
if i>=x2step
sum1=sum1+dx*exp(-y^2)/2
%pause
end
x=(i-1)*dx;
end
sum2=sum2+sum1
end
sum3=sum2*dx
 
Last edited:
oh... forgot to say that I am using trapazoidal rule for the integration
 
Now, this is giving me the corrrect answer but not sure if i cheated in a way or not... what do you think:
close all
clear all

x0=0; xt=1; xstep=110; dx=1/(xstep-1);
y0=0; yt=1; ystep=110; dy=1/(ystep-1);

sum2=0;
for i1=1:ystep+1
sum1=0;
y=(i1-1)*dy;
x2step=floor(y/dx);
for i=1:xstep+1
if i<=x2step
sum1=sum1+dx*exp(-y^2);
end
x=(i-1)*dx;
end
sum2=sum2+sum1;
end
sum3=sum2*dy
 
Back
Top