Hi! I have a problem in my function, Error in MATLAB
2 views (last 30 days)
Show older comments
Use Wellis product= pi/2=2/1∗2/3∗4/3∗4/5∗6/5∗ … in a function in MATLAB that receives the relative error willing to accept and return the user a vector with all values of π and other vector estimated with relative errors associated with each value of π. (This is in arrays). Thanks a lot. But, MATLAB gives me an error:
Attempted to access ret(0); index must be a positive integer or logical.
Error in pi_value (line 13)
ret(i) = 2 * (ret(i - 1) / 2) * temp;
The function is the following:
function[e, ret] = pi_value(err)
ret = [4];
value = 0;
e = inf;
i = 1;
while e > err
++i;
temp = 0;
if mod(i, 2) == 0
temp = i / (i + 1);
else
temp = (i + 1) / i;
end
ret(i) = 2 * (ret(i - 1) / 2) * temp;
e = abs(ret(i) - ret(i - 1));
end
end
Thanks a lot!
2 Comments
dpb
on 30 Oct 2016
What is index of the RH ret value in
ret(i) = 2*(ret(i-1)/2)*temp;
?? Matlab arrays, as the error message says, only begin at 1. You'll have to special-case the end condition to avoid explicitly referencing a 'zeroth' element.
Also, note that numerically the expression as written above is simply
ret(i) = ret(i-1)*temp;
the two 2's cancel each other out...
John D'Errico
on 30 Oct 2016
Not that the code as posted is NOT valid MATLAB syntax.
++i;
NOT in MATLAB.
Accepted Answer
KSSV
on 31 Oct 2016
function[e, ret] = pi_value(err)
ret = 4;
e = inf;
i = 1;
while e > err
i = i+1 ;
if mod(i, 2) == 0
temp = i / (i + 1);
else
temp = (i + 1) / i;
end
ret(i) = 2 * (ret(i - 1) / 2) * temp;
e = abs(ret(i) - ret(i - 1));
end
end
0 Comments
More Answers (0)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!