Problem with for loop
3 次查看(过去 30 天)
显示 更早的评论
areaneeded=3.75*100.1/100;
%disp(areaneeded) %area needed for a 0.1% error
a=1;
b=2;
for n=1:100;
h=(b-a)/n;
x=a:h:b;
y=x.^3;
ya=a.^3;
yb=b.^3;
area = h/2*(ya+yb+2*(sum(y)-ya-yb));
%disp(area)
tol=1e-12;
if abs(areaneeded-area)<tol
disp(n)
break
end
end
%
In this code i'm trying to find out the number of strips necessary to get an error of 0.1% with the trapezium rule. by cross multiplication i get the area i need to get with the trapezium rule, and then with the for loop i try to run n a hundred times (n=1, n=2, n=3...) and when the result from the trapezium rule is equal to the areaneeded display n. But i don't get any answer and i don't know how to solve it. Some help would be appreciate. Thanks in advance.
2 个评论
per isakson
2015-5-27
编辑:per isakson
2015-5-27
Here your code runs without throwing any error. What error do you get?
采纳的回答
Roger Stafford
2015-5-27
You have interpreted the phrase "get an error of 0.01%" far too literally. What is clearly meant is to find the smallest n such that the error is LESS than .01 percent of the correct amount. That means that you should write
areaneeded = 3.75; % The correct amount
....
tol = 3.75*.0001; % This is .01 percent of the correct amount
....
if abs(areaneeded-area) < tol
break;
As your code stands, the value n = 44 gets too much error and the next value n = 45 gets too little error to satisfy the tol = 1e-12 inequality which is a very tight requirement. Your code will never break.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Get Started with MuPAD 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!