What's wrong with my code? (Beginner's question; geometric sum)

1 view (last 30 days)
This is the sum I'm trying to use:
1 + r^2 + r^4 + r^6 + ... + r^n
If n isn't even, I'm supposed to display an error.
Here's my code:
function [sum] = series(r,n)
sum = 1;
if mod(n,2) == 0
for i=2:n
sum = sum + r.^i;
end
else
disp('Error!');
end
end
Keeps returning the wrong value. What's wrong with my code?

Accepted Answer

Roger Stafford
Roger Stafford on 13 Nov 2014
Edited: Roger Stafford on 13 Nov 2014
Replace
for i=2:n
by
for i=2:2:n
Or you could always just write
(1-r^(n+2))/1-r^2)
for even n.
  2 Comments
Image Analyst
Image Analyst on 13 Nov 2014
Here is the question Roger answered so people will know after n deletes his question, which he has a bad habit of doing:
This is the sum I'm trying to use:
1 + r^2 + r^4 + r^6 + ... + r^n
If n isn't even, I'm supposed to display an error.
Here's my code:
function [sum] = series(r,n)
sum = 1;
if mod(n,2) == 0
for i=2:n
sum = sum + r.^i;
end
else
disp('Error!');
end
end
Keeps returning the wrong value. What's wrong with my code?

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 13 Nov 2014
Don't use sum as the name of a variable since it's a built-in function. You want
for k = 2 : 2 : n
theSum = theSum + r^k;

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!