필터 지우기
필터 지우기

Cannot get factorial loop to work! Do not know command...

조회 수: 1 (최근 30일)
S
S 2014년 2월 9일
답변: Roger Stafford 2014년 2월 9일
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 :(

답변 (2개)

Mischa Kim
Mischa Kim 2014년 2월 9일
편집: Mischa Kim 2014년 2월 9일
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
John D'Errico
John D'Errico 2014년 2월 9일
편집: John D'Errico 2014년 2월 9일
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.
John D'Errico
John D'Errico 2014년 2월 9일
Another option here would be
y = dot(1:100,1:100);

댓글을 달려면 로그인하십시오.


Roger Stafford
Roger Stafford 2014년 2월 9일
Yet another way is:
n = 100;
y = n*(n+1)*(2*n+1)/6;

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by