double integral using trapz

3 ビュー (過去 30 日間)
ray sanchez
ray sanchez 2015 年 5 月 18 日
コメント済み: ray sanchez 2015 年 5 月 19 日
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));

回答 (2 件)

Walter Roberson
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
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;
And now you can use this File Exchange Contribution
ray sanchez
ray sanchez 2015 年 5 月 19 日
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.

サインインしてコメントする。


Andrei Bobrov
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);

カテゴリ

Help Center および File ExchangeNumerical Integration and Differentiation についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by