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

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?

 采纳的回答

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 个评论

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?

请先登录,再进行评论。

更多回答(1 个)

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;

类别

帮助中心File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

标签

尚未输入任何标签。

Community Treasure Hunt

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

Start Hunting!

Translated by