double integral using trapz
29 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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))
0 commentaires
Réponses (1)
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
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')
Voir également
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!