WIP: プログラマだから分かった気になれる総和(Σ)

WIP: プログラマだから分かった気になれる総和(Σ):

\sum 
「総和」というと高校の数学で教わったなぁ程度の記憶しかなく、Σ(sigma)記号は印象的だったけれど、当時はまったく理解できませんでした。

総和って一体何者だったんでしょうか?プログラマ視点で学び直してみたいと思います。

理解不足もあるため数学に詳しい人が見たら、「分かってねーな」「全然ちげーよ」「JSかよ!」などとブコメを頂きそうですが、ご指導いただける場合はコメントいただけると嬉しいです。


総和とは

まず、総和ってなんでしょうか?

Wikipedia日本語版によれば、

数学において、総和(そうわ、summation)とは与えられた数を総じて加えることである。
とのことです。

「与えられた数を総じて加える」

「与えられた数を総じて加える」

「与えられた数を総じて加える」

お分りいただけだただろうか?

・・・

うーん、50%くらい・・・。

プログラマの僕としては、英語版Wikipediaの方がわかりやすかったです。

In mathematics, summation (symbol: ∑) is the addition of a sequence of numbers; the result is their sum or total.
「sequence of numbers」と書いてあるので、数字の配列か、ふむふむ。計算結果はその「sum」になるそうなので、数字配列の合計値のことを総和というのね、とスッと入ってきました。


Σという記号

日本で生まれ育って、普段の生活でひらがな・カタカナ・漢字・ローマ字・算用数字くらいしか馴染みのない僕にとって、いきなりシグマと言われても、Σ(・口・)!?っとなります。なぜ、総和はΣという記号を使うのでしょうか?

総和は英語でsummationです。Σはギリシャ文字。ローマ字ではSに対応しています1。「Σはsummationの頭文字か、なるほど」と思うと覚えやすいです。

そもそも、なぜ数学はギリシャ文字なんか使うんでしょうね。文字のバリエーションを考えても表現力としてはローマ字とあまり変わらない気がしますが・・・。

ギリシャ文字をなぜ使うのか

ギリシャ文字を使うメリットです。

・数式を見ただけで何を表しているか分かりやすい

・ギリシャ文字を使わないと記号が足りない

- 数学と物理におけるギリシャ文字の使い方一覧 | 高校数学の美しい物語
数学がギリシャ文字を使う理由は、ヨーロッパで数学が育ってきた背景があって、ヨーロッパの人々は古典としてギリシャ語に親しんでいて、ローマ字だけでは文字数が足りないので、ギリシャ文字も使ったという経緯があるのかもしれませんね。

昨今のプログラミング言語なら、変数名や関数名のシンボルは単語が使えますし、エディタの補完機能もあるので書くのも苦労しないので、ローマ字だけで式を書けますが、数学が発展してきた当時は手書きですし、文字数を増やす代わりに記号の種類を増やすというのは合理的だと思います。

もしヨーロッパの人々が、ギリシャ語ではなく中国語古典の方に親しみを持っていたら、総和はこうなっていたかもしれませんねw

\underset{i=m}{\overset{n}{\huge 和}} 


総和のHello World

\sum_{i=1}^{5} i= 1 + 2 + 3 + 4 + 5 = 15 
多分これが一番具体的な式だと思います。シグマの上に5があり、下にはi=1があります。これだけでもなんとなくわかると思いますが、これと同じ計算結果になるコードをプログラムで書いてみると、シグマの上下の式がなんなのかもっとはっきりします。

PHP
$i = 1; 
array_sum(range($i, 5)); // 15 
Scala
val i = 1 
(i to 5).sum // 15 
(i to 5).reduce { (sum, n) => sum + n } // 15 
JavaScript(ES6)
function range(from, to) { 
  let nums = []; 
  for (let i = from; i <= to; i++) { 
    nums.push(i); 
  } 
  return nums; 
} 
 
Array.prototype.sum = function () { 
  return this.reduce((a, b) => a + b); 
}; 
 
const i = 1; 
range(i, 10).sum(); // 15 
このコードを見ると、シグマの上は配列の個数で、下は配列の最小値であるように思えます。

もう少し違った総和の式も見てみます。

\sum_{i=3}^{6} i^2= 3^2 + 4^2 + 5^2 + 6^2 = 86 
PHP
array_sum(array_map(function($a) { 
  return pow($a, 2); 
}, range(3, 6))); // 86 
Scala
(3 to 6).map(a => Math.pow(a, 2)).sum // 86 
JavaScript(ES6)
range(3, 6).map(a => a ** 2).sum(); // 86 
・・・

もう少し複雑な数式も説明したかったが、時間がなくなったので続きはまたいつか。つづく…?



  1. ギリシャ文字からローマ字への翻字については『Romanization of Greek - Wikipedia, the free encyclopedia』参照 


コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)