double integral using trapz

65 vues (au cours des 30 derniers jours)
woonghee Cho
woonghee Cho le 21 Mai 2022
Commenté : Parsa le 22 Mai 2022
I'm trying to approximate a double integral using traps. I'm not sure how to coding it.
-A given question
𝑓(𝑥, 𝑦) = (500*x*exp(y)) / (1 + 2*x^2)
0<x<4, -2<y<0
Using Trapezoidal rule with △x, △y=0.5, 0.25, 0.125, 0.0625, 0.03125
-The code that I tired :
clc, clear all;
format long
x = 0:0.5:4;
y = 0:0.5:4;
[X,Y] = meshgrid(x,y);
F = (500.*X.*exp(Y))/(1.+2.*X.^2);
I = trapz(y,trapz(x,F,2))

Réponses (1)

Parsa
Parsa le 21 Mai 2022
Hi Woonghee
In definition of F, you forgot a dot '.' , before '/ ' . Please try it and run your code again.
Also please take a look at the exapmle " Multiple Numerical Integrations " @doc:Trapezoidal numerical integration - MATLAB trapz (mathworks.com)
  2 commentaires
woonghee Cho
woonghee Cho le 22 Mai 2022
Thank you very much for your help!
Is there any way to generalize △x and △y to code?
Parsa
Parsa le 22 Mai 2022
If, by the term " generalize ", you mean that you want to calculate the integral for different integration intervals (steps), it could be done in a double 'for' loop, and a double-indexed I, so that you'll have a matrix for I, that the rows represent the integral values for fixed deltax and different deltay s, and the columns corrrespond to integral values for fixed delta-y and varying delta-x s. Alsoe you could show the integral convergence graphically. Please try some lines such as below :
xi=0; xf=4;
dx = [0.5, 0.25, 0.125, 0.0625, 0.03125];
yi=0; yf=4;
dy = dx;
for m=1:numel(dx)
x=xi:dx(m):xf;
for n=1:numel(dy)
y=yi:dy(n):yf;
[X,Y] = meshgrid(x,y);
F = (500.*X.*exp(Y))./(1.+2.*X.^2);
I(m,n) = trapz(y,trapz(x,F,2));
end
end
% convergence graph
figure, surf(I),xlabel('dy'),ylabel('dx')

Connectez-vous pour commenter.

Catégories

En savoir plus sur Numerical Integration and Differentiation dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by