Cannot get factorial loop to work! Do not know command...
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
The question is evaluate the following series: 1^2 + 2^2 +3^2 ... + 100^2. The answer is suppose to be 338350 but the only code i can get working is
a=[1:100] b=2; y=a.^b for y=1:length(a) end
which gives me each columns value, but does not add it up to value 338350! I have tried everything for a whole week please help :(
0 comentarios
Respuestas (2)
Mischa Kim
el 9 de Feb. de 2014
Editada: Mischa Kim
el 9 de Feb. de 2014
Use
a = [1:100];
b = 2;
y = 0;
for ii = 1:length(a)
y = y + a(ii)^b;
end
display(y);
Your sum, y, needs to be inside the loop to be updated. Alternatively, you can make use of MATLAB's matrix operations
y = sum([1:100].^2);
3 comentarios
John D'Errico
el 9 de Feb. de 2014
Editada: John D'Errico
el 9 de Feb. de 2014
Noe that the internal brackets [] are slightly bad, in the sense that they may make your code slightly less efficient. Use () there instead, so
y = sum((1:100).^2);
is better. Not a major issue, but one to remember. If you don't really need brackets, which will result in an extra function call overhead that was never needed, don't use them. Use parens instead. I'm pretty sure that mlint flags this issue.
Roger Stafford
el 9 de Feb. de 2014
Yet another way is:
n = 100;
y = n*(n+1)*(2*n+1)/6;
0 comentarios
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!