double integral using trapz
3 次查看(过去 30 天)
显示 更早的评论
I'm trying to approximate a double integral using traps. This code is telling me the answer is 0 when it should be pi/4. I'm not sure how to fix it.
clear; close all; clc;
x = 0:.1:1;
y = 0:.1:sqrt(1-x.^2);
[X,Y] = meshgrid(x,y);
F = 1;
I = trapz(x,trapz(y,F));
0 个评论
回答(2 个)
Walter Roberson
2015-5-18
0:.1:sqrt(1-x.^2) with x a vector, tries to use a vector as the termination value for the iteration. When the termination value is a vector, only the first element of the vector is used. Your y is thus the same as
0:.1:sqrt(1-x(1).^2)
and your x and y are both linear -- actually they are even the same. Nothing much to integrate.
3 个评论
Walter Roberson
2015-5-18
You are still trying to use a vector in the last position of the colon operator ':'. That is not going to work.
I suggest you do this:
x = 0:0.1:1;
y = 0:0.1:1;
[X,Y] = meshgrid(x,y);
F = @(x,y) 1;
Z = F(X,Y);
Z(Y > sqrt(1-X.^2)) = 0;
Andrei Bobrov
2015-5-18
Try use idea by Walter (+1):
x = 0:.1:1;
f = @(x)sqrt(1 - x.^2);
[yy,xx] = ndgrid(x);
out = trapz(x,trapz(yy,f(xx)>=yy),2);
0 个评论
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!