limit to infinity of Left Riemann Sum

4 次查看(过去 30 天)
Hi there,
Lets say I have created a function Sn=LeftRiemannSum(f,left,right,N) ,that computes the left riemann sum over the interval left to right with N subdomains.i.e.:
Sn=sum(f(xi)*h) for all subdomains i=0 to N-1. f is my function and xi=left+i*h , so the input arguments left=x0 and right=xN.
Let f be my anonymous function (ex f=@(x)(x.*log(1+x)) .
I also estimated the Sn for varying N, from N=10 to 100000.
Now, I simply want to compute the value of the series Sn when N -> infinity. Inside the function I have a for loop [ for i=0:(N-1)] so I will have endless loop ..
Can I pass the function somehow to the 'limit' command? Any clues?
Thanx!
PS: The main part of the code of my function LeftRiemann Sum is the following:
if true
for i=0:(N-1)
x=x0+i.*h;
y=f(x);
A=y.*h;
S=S+A
end
Sn=S
end

采纳的回答

Zoltán Csáti
Zoltán Csáti 2014-11-3
If I am not mistaken, you try to determine the limit of the left Riemann-sum for the value of the definite integral. Of course you can't take infinite members. If you want to use this approach, I recommend you to use a large number for N and also estimate the right Riemann-sum. If the two sums are approximately equal, then there is hope that this is the approximate value of the integral.
A comment: it can easily be vectorized:
N = 1000;
a = 1;
b = 2;
h = (b-a)/N;
x = x0+(0:N)*h;
fx = f(x);
sum(fx*h);

更多回答(1 个)

Torsten
Torsten 2014-11-3
Use
S_inf = integral(f,left,right)
to get the limit.
Best wishes
Torsten.
  3 个评论
Stelina
Stelina 2014-11-3
Yes, I should have clarified. I already integrated my function analytically with
syms x;f=x.*log(1+x);
F=int(f) %integrate
a=0;b=1;
area=int(f,a,b)
, so I know the exact result.
Though, I still don't quite get whats the point of this homework exercise. For example, even if I use a relatively not that large value for N (I tried N=10000000) to substitute "inf", I get the exact same number, meaning my numerical approximation is perfect.
Besides, I guess MATLAB uses sth like that to calculate int "analytically" right?
Lol, I should ask MATLAB.
Torsten
Torsten 2014-11-3
If you use "int", MATLAB tries to analytically determine a function F such that F'=f.
In your case, F(x)=0.25*(2*(x^2-1)*log(1+x)-(x-2)*x).
Thus in the limit you get F(1)-F(0)=0.25.
Best wishes
Torsten.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Mathematics 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by