double integral using trapz

3 views (last 30 days)
ray sanchez
ray sanchez on 18 May 2015
Commented: ray sanchez on 19 May 2015
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));

Answers (2)

Walter Roberson
Walter Roberson on 18 May 2015
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 Comments
Walter Roberson
Walter Roberson on 18 May 2015
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;
And now you can use this File Exchange Contribution
ray sanchez
ray sanchez on 19 May 2015
I'm not sure how to use that file. Do I have this on a script and use the file as a function on another script? Sorry I'm really new to this stuff.

Sign in to comment.


Andrei Bobrov
Andrei Bobrov on 18 May 2015
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);

Products

Community Treasure Hunt

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

Start Hunting!