double integral using trapz
29 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (1 件)
Parsa
2022 年 5 月 21 日
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 件のコメント
Parsa
2022 年 5 月 22 日
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')
参考
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!