Summation of all odd numbers from 1 to 451

21 views (last 30 days)
Zacharia
Zacharia on 19 Aug 2022
Commented: Voss on 19 Aug 2022
The following lines accurately sum when d (common difference) is 1, however, as soon as it changes, I get a wrong answer, does anyone understand why? I assume I am quite ignorant, but I would love any help I can get:
% Initialize n, a, d and s
n = 451;
a = 1;
d = 2;
S = 0;
% Compute S by adding the terms
for i = 1:n
S = S+a+(i-1)*d;
end
%Call S
S
Command Window:
S = 203401
  • Where S should actually equal: 51,076

Answers (2)

VBBV
VBBV on 19 Aug 2022
Edited: VBBV on 19 Aug 2022
n = 451;
a = 1;
d = 2;
S = 0;
% Compute S by adding the terms
for i = 1:n
S(i) = (a+(i-1)*d/2);
end
sum(S(1:2:end)) % sum of all odd numbers
ans = 51076
  1 Comment
Zacharia
Zacharia on 19 Aug 2022
Thankyou so much, I understand more from both answers now!
I truly appreciate your help, have a lovely day :)

Sign in to comment.


Voss
Voss on 19 Aug 2022
The for loop iterates n times, so after it's done, S represents the sum of n terms, which is fine when d = 1, but when d > 1, the summation you want has less than n terms.
In other words, there are 451 integers between 1 and 451 (inclusive), but only (451+1)/2 = 226 odd integers in that range and only (451+2)/3 = 151 integers congruent to 1 mod 3 (i.e., 1, 4, 7, 10, ...) in that range.
So "for i = 1:n" must be modified to take into account the value of d, so that the loop iterates the correct number of times.
  2 Comments

Sign in to comment.

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!