Infinite Loop help Riemann sums
2 views (last 30 days)
Show older comments
For some reason it's get stuck in an infinite loop. The programs says line 8 is the problem so the "first = first" line so I'm assuming its the bound problem? I don't see the problem any suggestions?
Note: my functions needs to give me an approx that has an difference from the previous estimate less than the tol that's why I'm running a while and for loop.
3 Comments
Azzi Abdelmalek
on 24 Feb 2013
It's difficult to say if we don not know a,b,tol and your function f.
Accepted Answer
Youssef Khmou
on 24 Feb 2013
Edited: Youssef Khmou
on 24 Feb 2013
hi Kenny, your program works fine for most of cases
Note : no need to declare syms x ,
I tried to to make some change according to your model , like number of samples n, no need to increase through the loop, the theorem states that the Sum converges when N->Inf :
function y = myintegralapprox(f,a,b,tol)
tol=100*tol;
n = 1000;
c = tol + 1;
first = 0;
second = 0;
counter=1;
while (c > tol)
for m=a+(((b-a)/n)/2):((b-a)/n):(b-((b-a)/n)/2)
first = first + ((b-a)/n)*(f(m));
end
counter=counter+1;
if counter>1e+6
break;
end
y = first;
c = abs(first - second);
second = first;
end
I made some tests comparing you func with "quad" function :
>>myintegralapprox(@(x) 1/(1+exp(x)),0,pi,.1)
>>quad(@(x) 1./(1+exp(x)),0,pi)
>>myintegralapprox(@(x) cos(x),0,pi,.1)
>>quad(@(x) cos(x),0,pi)
>>myintegralapprox(@(x) exp(-x^2),0,pi,.1)
>>quad(@(x) exp(-x.^2),0,pi,.1)
>>myintegralapprox(@(x) (x^3)+(x^2)+1,0,pi,1)
>>quad(@(x) (x.^3)+(x.^2)+1,0,pi)
More Answers (0)
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!