How writing code sum 1+2+3+4+...+n

Hi. How I can writing code in MATLAB sum 1+2+3+4+..+n
and I can change ( n ) to any numbers and MATLAB can sum for me.
Thank you

回答 (2 件)

Jos (10584)
Jos (10584) 2019 年 5 月 17 日

1 投票

or know your math classics ...
n = 120345428372
s = n*(n+1)/2
% sum(1:n) will fail!

6 件のコメント

James Tursa
James Tursa 2019 年 5 月 17 日
編集済み: James Tursa 2019 年 5 月 17 日
Well, n*(n+1)/2 fails also ...
>> n = 120345428372;
>> fprintf("%20f\n",n*(n+1)/2)
7241511065080263868416.000000
>> vpa(n)*vpa(n+1)/2
ans =
7241511065080263999378.0
Jos (10584)
Jos (10584) 2019 年 5 月 18 日
So true, James :-D
Walter Roberson
Walter Roberson 2023 年 12 月 11 日
編集済み: Walter Roberson 2023 年 12 月 11 日
n = 120345428372;
sym(n) * (sym(n)+1) / 2
ans = 
7241511065080263999378
syms m
symsum(m, 1, n)
ans = 
7241511065080263999378
Alexander
Alexander 2023 年 12 月 11 日
Maybe a stupid question, but what is the right answer? 7241511065080263999378 or 7241511065080263868416?
Walter Roberson
Walter Roberson 2023 年 12 月 11 日
v = sym('7241511065080263999378')
v = 
7241511065080263999378
fprintf('%.999g\n', double(v))
7241511065080263868416
So 7241511065080263868416 is the closest double precision representation of 7241511065080263999378
eps(double(v))
ans = 1048576
which is large enough adjacent representable double precision numbers in that range are 1048576 apart.
Alexander
Alexander 2023 年 12 月 12 日
Understood. Thank you

サインインしてコメントする。

Stephan
Stephan 2019 年 5 月 17 日
編集済み: Stephan 2019 年 5 月 17 日

0 投票

n = 4;
A = sum(1:n)

カテゴリ

ヘルプ センター および File ExchangeMathematics についてさらに検索

タグ

質問済み:

2019 年 5 月 17 日

コメント済み:

2023 年 12 月 12 日

Community Treasure Hunt

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

Start Hunting!

Translated by