C LANGUAGE TECHNOLOGY

【C言語】級数とは【自然数の和,1に収束する分数の和,バーゼル問題(オイラー級数)】

悩んでいる人

C言語で級数を教えて!

こういった悩みにお答えします.

本記事の信頼性

  • リアルタイムシステムの研究歴12年.
  • 東大教員の時に,英語でOSの授業.
  • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校コンピュータサイエンス学部2021年の世界大学学術ランキングで20位)で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発
  • プログラミング歴15年以上,習得している言語: C/C++,Java,Python,Ruby,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
  • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開

こういった私から学べます.

級数

級数とは,数や関数など互いに足すことのできる数学的対象の列の無限項の和のことです.

初項\(a_1\)から第n項(nは自然数)\(a_n\)までの級数の総和は以下になります.

$$S_n = \sum_{i=1}^n a_i = a_1 + ... + a_n$$

nの値が無限大(∞)の場合は無限級数になり,そうでない場合は有限級数となります.

コンピュータでは無限項の和は表現できないので,n個の和の計算による有限級数となります.

無限級数で収束する場合,nの値をできるだけ大きくすることで真の値の近似値を数値解析します.

数学では計算の最終結果がわかりますが,コンピュータによる数値解析では真の値に近づいていく過程がわかります.

自然数の和

最もシンプルな級数といえば,1からnまでの自然数の和ですね.

その級数は下式になります.

$$S_n = \sum_{i=1}^n i = 1 + 2 + 3 + ... + n = \frac{n(n+1)}{2}$$

1からnまでの自然数の和を計算するコードは以下になります.

実行結果は以下になります.

3行目の行末に10を入力した場合,1~10までに総和と(n * (n + 1)) / 2の計算結果が両方とも55になっていることがわかります.

nの値を大きくするとオーバーフローが発生し,unsigned long型のような符号なし整数の場合は0に戻ります.

これに対して,浮動小数点数でオーバーフローが発生した場合は無限大になります.

オーバーフローは以下の記事に詳しく記載してあります.

C言語 算術オーバーフロー
【C言語】算術オーバーフローと回避方法

こういった悩みにお答えします. こういった私から学べます. 目次1 算術オーバーフロー2 整数オーバーフロー3 C言語で符号ありデータ型を使う理由4 符号エラー5 切り捨てエラー6 不完全な範囲チェッ ...

続きを見る

1に収束する分数の和

1に収束する分数の和として下式の級数があります.

$$S_n = \sum_{n=1}^{\infty} \frac{1}{2n} = \frac{1}{2} + \frac{1}{4} + \frac{1}{8} + \frac{1}{16} + ... = 1$$

1に収束する分数の和のコードは以下になります.

実行結果は以下になります.

1に収束していることがわかります.

バーゼル問題(オイラー級数)

バーゼル問題(オイラー級数)とは,平方数の逆数の1~∞の全ての和は何かという級数の問題の一つです.

証明は省略しますが,答えは以下になります.

$$S_n = \sum_{n=1}^{\infty} \frac{1}{n^2} = \lim_{n \to \infty} \left( \frac{1}{1^2} + \frac{1}{2^2} + ... + \frac{1}{n^2} \right) = \frac{\pi^2}{6} = 1.644934066848226436472...$$

C言語のfloat/double/long double型でバーゼル問題を計算するコードは以下になります.

実行結果は以下になります.

long double型が真の値(1.644934066848226436472...)に一番近いことがわかります.

まとめ

C言語で級数として,自然数の和,1に収束する分数の和,バーゼル問題(オイラー級数)を紹介しました.

級数はコンピュータの数値解析の基本ですので,きちんと習得しましょう.

C言語を独学で習得することは難しいです.

私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.

友だち追加

独学が難しいあなたは,C言語を学べるおすすめのオンラインプログラミングスクール4社で自分に合うスクールを見つけましょう.

-C LANGUAGE, TECHNOLOGY
-, , , , , ,