Why are these sums not the same?

1 回表示 (過去 30 日間)
Steve
Steve 2015 年 1 月 16 日
編集済み: Roger Stafford 2015 年 1 月 16 日
Hello together,
What is the difference between these two:
1:
>>sum(cos(0.5*pi)*(0:99))
ans =
3.0310e-13
and 2:
>>S=0;
>> for J=0:99
S=cos(0.5*pi)*j;
end;
>> S =
6.0620e-15
Why is there a different result?
Thank you for any help!

採用された回答

Roger Stafford
Roger Stafford 2015 年 1 月 16 日
編集済み: Roger Stafford 2015 年 1 月 16 日
There is no reason they should be the same! In the for-loop method you are not doing a summation, as is done in the first method. All you obtain is the value of the last term, namely cos(0.5*pi)*99.
If you change the last method to
S = S + cos(0.5*pi)*j;
any difference between that value and the one for the first method will be due to differences in round off errors.
Ideally cos(0.5*pi) should be an exact zero, but both because pi cannot be represented exactly and because of errors in the cosine computation, it actually gives 6.1232e-17 as its value.

その他の回答 (1 件)

Image Analyst
Image Analyst 2015 年 1 月 16 日

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by