# For loop not calculating properly

2 views (last 30 days)
Kyle Donk on 14 Jan 2020
Commented: Image Analyst on 18 Jan 2020
My instructions are to calculate the result and absolute error for each partial sum: N = 10, 160, and 640. I am supposed to be getting the sum and error value for each N, but I am only getting the sum and error values for 640 only. I do not know why this is the case, as N equals 10, 160 and 640.
PLEASE DO NOT GIVE ME A COMPLETE ANSWER. I WOULD JUST LIKE TO KNOW WHAT I AM DOING WRONG. THANK U.
This is what I have so far:
for N=[10 160 640]
sum=0;
for n=1:N
y=1/n^2
sum=sum+y;
end
sum
error=((pi^2)/6)-sum
end

David Hill on 14 Jan 2020
You could vectorize the whole thing.
n=1:640;
s=cumsum(1./(n.^2));
e=abs(pi^2/6-s);
Kyle Donk on 14 Jan 2020
I have to use a for loop for this and most of the time we are not allowed to use Matlab's built-in functions.
Image Analyst on 14 Jan 2020
Kyle, did you see my Answer (below)??? I already gave you hints for solving it using your current for loop.

Image Analyst on 14 Jan 2020
Don't use sum as the name of your variable since that's already the name of a built-in function.
You need to assign N outside the loop and then get it inside the loop (method 1), OR use a counter to get the iteration number (method 2).
N=[10 160 640] % Method 1
for k = 1 : length(N)
thisN = N(k)
% more code to compute this sum.
end
Then you need to compute thisSum(k) and also index the error with the iteration loop counter:
thisError(k) = ((pi^2)/6) - thisSum(k);
so that you will have an error value for every iteration.

#### 1 Comment

Image Analyst on 18 Jan 2020