【そろけん塾コラム_13】指数関数的成長と現実世界

こんにちは、そろけん塾です。

 

1が2に、2が4に、4が8に…気づいた時にはもう手遅れ!?

 

これは、指数関数的成長の恐ろしさを示す典型的なパターンです。

この記事では、バイラル動画の拡散、パンデミックの広がり、貯金の増え方 など、身近な例とともに指数関数的成長をわかりやすく解説し、子供たちが学びながら楽しめる実践方法も紹介します。


こんな疑問はありませんか?

✔ 「SNSで一部の動画だけが爆発的に流行るのはなぜ?」

✔ 「なぜウイルスは短期間で広がってしまうの?」

✔ 「お金が増える仕組みを子供にわかりやすく教えたい!」

 

こうした疑問の答えが、「指数関数的成長」に隠されています!

 


指数関数的成長とは?

指数関数的成長とは、ある量が一定の割合で増え続けること です。

例えば、

  • 1日目:1匹のバクテリア
  • 2日目:2匹
  • 3日目:4匹
  • 4日目:8匹

と増えていく場合、これは 指数関数的に増加 していると言えます。

一般的な計算式は以下のようになります。

ここで、

この仕組みを理解すると、さまざまな現象を説明できます!


身近な指数関数的成長の例

1. バイラル動画の拡散

TikTokやYouTubeで、ある動画が急に大ヒットする現象 は、まさに指数関数的成長の例です。

例えば:

  1. 1人が動画を視聴し、2人に共有する。
  2. その2人がさらに2人ずつに共有する(合計4人)。
  3. その4人がさらにそれぞれ2人ずつに共有する(合計8人)。

このように、わずか数回の拡散で何万人もの視聴者に届く ことも珍しくありません。

2. パンデミックの広がり

感染症の広がりも指数関数的成長の一例です。

  • 1人の感染者が1日に2人に感染させる。
  • その2人がさらに2人ずつに感染を広げる。
  • 10日後には 1024人に感染!

だからこそ、早めの対策が重要 なのです。

3. 貯金の増え方(複利の魔法)

「貯金がなかなか増えない…」と思っている人も、複利を味方にすれば指数関数的成長が期待できます!

例えば、

  • 毎月1万円を年利5%で貯めると…
  • 10年後には 約162万円
  • 20年後には 約412万円

時間が経つほど、増え方が加速していきます。


子供と学ぶ!指数関数的成長の実験

【実験1:折り紙で月に届く!?】

【準備するもの】

  • A4サイズの紙(1枚)

【やり方】

  1. 紙を半分に折る。
  2. さらに半分に折る(合計2回)。
  3. 可能な限り繰り返す(7回くらいで折れなくなる)。

【結果】

紙の厚さは 指数関数的に 増加し、理論上は

  • 10回で約10cm
  • 20回で約10km
  • 42回で 月まで届く!(約40万km)

指数関数的成長の威力が実感できる実験です!

※実際は7回以上は折れないかもしれません(^_^;)


【実験2:おはじきで感染拡大シミュレーション】

【準備するもの】

  • おはじきやビー玉(できるだけ多く)

【やり方】

  1. おはじきを1つ置く(感染者0人)。
  2. 1ターンごとに、1つのおはじきが2つに増える。
  3. 5ターン後、10ターン後の数を数えてみる。

【結果】

指数関数的成長の影響で、たった10ターンで 1024個!

感染症の拡大がいかに速いかを実感できる!


まとめ:指数関数的成長を味方にしよう!

バイラル動画、感染症、貯金の増え方はすべて指数関数的成長!

早めの行動が結果を大きく左右する!

子供と楽しく学べる実験で体感できる!

 

日常生活の中で、指数関数的成長のパワーを活用し、賢く行動しましょう!

最新情報をチェックしよう!

document.addEventListener("DOMContentLoaded", function () { let digit = 1; let count = 5; let speed = 1000; let numbers = []; let sum = 0; let currentIndex = 0; let interval; const canvas = document.getElementById("flash-canvas"); const ctx = canvas.getContext("2d"); function updateDisplay() { document.getElementById("digit-display").textContent = digit; document.getElementById("count-display").textContent = count; document.getElementById("speed-display").textContent = speed + "ms"; } document.getElementById("digit-slider").addEventListener("input", function () { digit = parseInt(this.value); updateDisplay(); }); document.getElementById("count-slider").addEventListener("input", function () { count = parseInt(this.value); updateDisplay(); }); document.getElementById("speed-slider").addEventListener("input", function () { speed = parseInt(this.value); updateDisplay(); }); function drawNumber(number) { ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.font = "50px Arial"; ctx.fillStyle = "white"; ctx.textAlign = "center"; ctx.textBaseline = "middle"; ctx.fillText(number, canvas.width / 2, canvas.height / 2); } document.getElementById("start-button").addEventListener("click", function () { numbers = []; sum = 0; currentIndex = 0; document.getElementById("result-message").textContent = ""; document.getElementById("answer-input").value = ""; for (let i = 0; i < count; i++) { let num = Math.floor(Math.random() * (10 ** digit)); numbers.push(num); sum += num; } function showNextNumber() { if (currentIndex < numbers.length) { drawNumber(numbers[currentIndex]); currentIndex++; interval = setTimeout(showNextNumber, speed); } else { ctx.clearRect(0, 0, canvas.width, canvas.height); document.getElementById("question-area").textContent = "答えを入力してください"; } } showNextNumber(); }); document.getElementById("check-answer").addEventListener("click", function () { let userAnswer = parseInt(document.getElementById("answer-input").value, 10); if (userAnswer === sum) { document.getElementById("result-message").textContent = "正解!🎉"; document.getElementById("result-message").style.color = "green"; } else { document.getElementById("result-message").textContent = "不正解 😢 正解は " + sum; document.getElementById("result-message").style.color = "red"; } }); updateDisplay(); }); #flash-canvas { background-color: black; border-radius: 10px; display: block; margin: 10px auto; } input[type="range"] { width: 100%; } button { background-color: #008CBA; color: white; padding: 10px; border: none; border-radius: 5px; cursor: pointer; } button:hover { background-color: #005f73; }