指数関数と関数の伸び方

回 2-2 分野 2 関数と対数

指数関数は y = a^x (a は 1 でない正の数) の形の関数で、x が 1 増えるたびに y が a 倍になります。a が 1 より大きければ増え続け、どの一次関数や二次関数もいつかは追い越します。2^n は n が 10 で n^3 を追い越し、n が 30 で 10 億を超えます。全部の組み合わせを試す処理の手間は 2^n で増えるので、n が 20 台を超えると急に間に合わなくなります。

指数関数の定義と性質をそろえてから、一次、二次、指数、対数の関数の値を並べて、どこで追い越すか、どの n まで間に合うかを数えます。

20 個なら一瞬、40 個だと終わらないのはなぜか

20 個の品物から、合計の重さがちょうど決まった数になる組を探すとします。全部の選び方を試すと、1 個ごとに「入れる、入れない」の 2 通りなので、2^20 = 1048576 通りです。100 万通りなら、計算機はすぐに終わります。

品物を 40 個にすると、2^40 = 1099511627776 通り、約 1 兆通りです。品物は 2 倍にしただけなのに、試す数は 100 万倍になりました。

数が「1 増えるたびに 2 倍」になる関数が、指数関数です。定義と公式とグラフだけを知りたい人は、次の「指数関数とは」から読んでください。この回では、指数関数の定義とグラフの形をそろえてから、一次、二次、対数の関数と値を並べ、どこで追い越すか、どの大きさまで間に合うかを数えます。

指数関数とは

y = a^x の形の関数を、a を底とする指数関数と呼びます。a は 1 でない正の数です。x が 1 増えるたびに、y は a 倍になります。

a に決まりがあるのは、次の理由です。

  • a = 1 なら、y はいつも 1 で、増えも減りもしない
  • a が 0 なら、x が負のとき 0 で割ることになる
  • a が負なら、(−2)^(1/2) のように実数で決まらない x が出る

累乗は 2^3 = 8 のように、同じ数を何回か掛けた数です。指数は、そのときの右上の 3 です。指数関数は、この指数の方を変数 x にした関数です。

指数法則と、0 乗、負の数、分数の指数

決まり式2 の例
掛けると指数は足すa^m × a^n = a^(m+n)2^3 × 2^4 = 2^7 = 128
割ると指数は引くa^m ÷ a^n = a^(m−n)2^5 ÷ 2^2 = 2^3 = 8
累乗の累乗は掛ける(a^m)^n = a^(mn)(2^3)^2 = 2^6 = 64
0 乗は 1a^0 = 12^0 = 1
負の指数は逆数a^(−n) = 1 / a^n2^(−3) = 1/8
分数の指数は累乗根a^(1/n) は n 乗すると a になる正の数2^(1/2) = √2 ≒ 1.414
分数の指数の一般の形a^(m/n) = (a^(1/n))^m8^(2/3) = 2^2 = 4

0 乗が 1 なのは、割ると指数を引く決まりで 2^3 ÷ 2^3 = 2^0 になり、同じ数で割った答えは 1 だからです。負の指数と分数の指数も、指数法則が崩れないように決めた物です。

グラフの形

y = 2^x と y = (1/2)^x の値を並べます。

x−2−1012
2^x1/41/2124
(1/2)^x4211/21/4

表から、次のことが読めます。

  • どちらも x = 0 で 1 になる。グラフは点 (0, 1) を通る
  • a が 1 より大きい 2^x は、右へ行くほど増える。0 < a < 1 の (1/2)^x は減る
  • x が負でも値は正で、0 には近づくが 0 にはならない。グラフは x 軸に近づき続ける
  • (1/2)^x は 2^(−x) と同じなので、2 つのグラフは y 軸で左右に折り返した形

指数方程式と指数不等式

x が指数にある方程式は、両辺の底をそろえて、指数どうしを比べます。

  • 2^x = 32 は、32 = 2^5 なので x = 5
  • 4^x = 8 は、4 = 2^2、8 = 2^3 なので 2^(2x) = 2^3 で、2x = 3、x = 3/2
  • 底をそろえられないときは、両辺の log を取る。2^x = 10 は x = log2 10 ≒ 3.32

不等式も底をそろえて指数を比べますが、底が 1 より小さいときは不等号の向きが逆になります。

  • 2^x > 2^3 は、2^x が増える関数なので x > 3
  • (1/2)^x > (1/2)^3 は、(1/2)^x が減る関数なので x < 3

大小の比べも同じで、底か指数をそろえるか、log を取ってから比べます。5 本目のコードで確かめます。

対数関数は、指数関数を裏返した物

y = 2^x の x と y を入れ替えた x = 2^y を y について解くと、y = log2 x です。対数関数は、指数関数の逆の関数で、グラフは y = x の線で折り返した形になります。指数関数は「何回掛けたらいくつか」、対数関数は「いくつにするには何回掛けるか」を返します。対数は 2-1 の回で詳しく扱っています。

e と自然な指数関数

e は約 2.71828 の数で、(1 + 1/n)^n の n を大きくしていった行き先です。y = e^x は、どの点でも傾きが自分の値と同じになる指数関数で、利息の連続の複利、放射性物質の減り方、機械学習の softmax や sigmoid に出てきます。Python では math.exp(x) で e^x を計算します。

一次、二次、指数、対数の伸び方を比べる

計算の手間を n の関数で書くと、よく出る形は次の通りです。O 記法の意味は CS 1-3 の回で扱っています。

形関数の種類n = 10n = 100n = 1000
log2 n対数関数約 3.3約 6.6約 10
n一次関数101001000
n log2 n一次と対数の積約 33約 664約 9966
n²二次関数1001 万100 万
n³三次関数1000100 万10 億
2^n指数関数102431 桁302 桁

n = 10 では 2^n より n³ の方がまだ小さく、ほぼ同じです。n = 100 になると、2^n は 31 桁の数で、n³ の 100 万とは比べ物になりません。指数関数は、どんな累乗の関数 n^k も、n が十分大きければ必ず追い越します。ただし k が大きいほど、追い越す n は遅くなります。

動かして確かめる

1 本目は、2^x と (1/2)^x の値を、分数のまま出します。上のグラフの表に x = −3 と 3 を足した範囲で、同じ数が出るかを見てください。

動かす 2^x と (1/2)^x の表を作る

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

-3 1/8 8
-2 1/4 4
-1 1/2 2
0 1 1
1 2 1/2
2 4 1/4
3 8 1/8

x = 0 で両方 1 になり、x が負のときも値は正のままです。2^x の列を下から読むと (1/2)^x の列になっていて、左右に折り返した形だと分かります。

2 本目は、2^n が n² と n³ を追い越す所を探します。n = 1 も入れて、境目を見ます。

動かす 2^n が累乗を追い越す n を探す

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

1 2 1 1 True
2 4 4 8 False
3 8 9 27 False
4 16 16 64 False
5 32 25 125 False
6 64 36 216 False
7 128 49 343 False
8 256 64 512 False
9 512 81 729 False
10 1024 100 1000 True
11 2048 121 1331 True
12 4096 144 1728 True
k 2 n 5
k 3 n 10
k 5 n 23
k 10 n 59

n = 1 では 2 > 1 で、2^n の方が大きいです。n = 2 から 9 までは n³ の方が大きく、n = 10 で 1024 > 1000 となって追い越し、そこから先は抜き返されません。n^10 を追い越すのは n = 59 で、累乗の次数が上がると追い越す所は遅くなりますが、いつかは追い越します。

3 本目は、1 秒に 1 億回の計算ができるとして、手間の形ごとに、1 秒で間に合う n の上限を数えます。1 億回という数は、ここでの目安の仮定です。

動かす 1 秒に間に合う n の上限

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

n 100000000
n log n 4523071
n^2 10000
n^3 464
2^n 26
n! 11

1 億回までに収まる n は、n なら 1 億、n² なら 1 万、n³ なら 464、2^n なら 26、n! なら 11 です。2^n の全探索は、n が 20 台の半ばを超えると 1 秒に収まらなくなります。入力の n の上限を見ると、使える手の形の当たりが付きます。

4 本目は、全部の選び方を実際に回して、試した数が 2^n になるかを数えます。i の 2 進数の各桁を「入れる、入れない」に見立てる、ビットを使った全探索です。

動かす 全部の選び方を回して数える

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

試した数 64 64
[11, 13]
[7, 17]

6 個で 64 通りを全部試し、合計 24 になる 2 組を見つけました。この書き方は短くて間違いにくいですが、品物が 1 個増えるたびに試す数が倍になります。

5 本目は、指数の大小の比べと、小数で計算したときの限界です。

動かす 大小の比べと小数の限界

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

9.031 9.542
True
10.0
2^x > 10^6 20
(1/2)^x < 1/1000 10
True
小数は桁あふれ
2.718281828459045

2^30 と 3^20 は、両方の log10 を取ると 9.031 と 9.542 で、3^20 の方が大きいと分かります。整数のまま比べても同じ答えです。2^x = 1024 は x = 10 です。2^x > 10^6 となる最小の整数は 20、(1/2)^x < 1/1000 となる最小の整数は 10 です。(1/2)^x は減る関数なので、x が大きいほど小さくなり、不等号の向きが 2^x のときと逆に働きます。Python の整数は 2^1024 でも計算できますが、小数 (float) は約 1.8 × 10^308 が上限で、2.0 ** 1024 は桁あふれのエラーになります。

伸び方の比べは、どこで外れるか

小さい n では、指数の方が小さいことがある

2 本目の通り、n が 2 から 9 の間は n³ の方が 2^n より大きいです。1.1^n と n^10 のように、底が 1 に近く、相手の次数が大きいと、追い越すのはずっと先で、n が 2 以上で追い越す最初の n は 686 です (分数のまま 1 つずつ比べて数えた値)。「指数は大きい」は、n が十分に大きいときの話です。

オーダーは定数倍を見ない

O 記法は、n が大きいときの伸び方の形だけを比べ、10n と n を同じ O(n) と見ます。n が小さい間は、形の悪い手の方が速いこともあります。間に合うかの見積もりは目安で、最後は実際に測ります。

小数の桁あふれと誤差

指数関数の値はすぐに大きくなるので、小数で計算すると上限 (約 1.8 × 10^308) を超えます。math.exp(710) も桁あふれします。確率を何度も掛ける計算では、反対に 0 に近づきすぎて 0 になります。大きな数は整数のまま持つか、log を取って足し算に直します。

仕事とコンテストでどう使うか

指数関数と伸び方の比べが出てくる場面は、次の通りです。

  • 入力の大きさから手を選ぶ。n が 20 前後までなら全部の選び方 (2^n) を試せる。n が 10 万なら n² は 100 億で重く、n log n の手を探す
  • 再試行の待ち時間。通信が失敗したときに、待つ時間を 1 秒、2 秒、4 秒と倍にしていく指数バックオフは、指数関数で待ち時間を伸ばす手
  • パスワードの通り数。英字の大文字と小文字と数字の 62 種類で 8 字なら 62^8 = 約 218 兆通り。字数を 1 つ増やすと 62 倍になる
  • お金の増え方。年 7% で増えると、10 年で 1.07^10 = 約 1.97 倍、ほぼ 2 倍になる
  • 機械学習。softmax や sigmoid は e^x を使い、大きな値の差を確率に直す

よくある問い

指数関数とは、ひと言で何ですか

x が 1 増えるたびに、y が決まった倍率で増える (または減る) 関数です。y = 2^x なら、x が 1 増えるたびに 2 倍です。一次関数が「決まった数ずつ足す」のに対し、指数関数は「決まった数ずつ掛ける」関数です。

指数関数的に増えるとは、どういう意味ですか

決まった時間や回数ごとに、決まった倍率で増えることです。最初はゆっくりに見えても、倍々で増えるので、途中から急に大きくなります。2 倍を 10 回で約 1000 倍、20 回で約 100 万倍、30 回で約 10 億倍です。

指数関数と対数関数は、何が違いますか

互いに逆の関数です。y = 2^x は「x 回掛けるといくつか」を、y = log2 x は「x にするには 2 を何回掛けるか」を返します。2^10 = 1024 と log2 1024 = 10 は、同じ関係を表から読むか裏から読むかの違いです。

指数関数は何に使われますか

増え方や減り方が倍率で決まる物を表すのに使います。お金の複利、細菌の増え方、放射性物質の減り方、通信の再試行の待ち時間、全部の組み合わせを試す処理の手間、機械学習の確率の計算などです。

確認クイズ

答えだと思う選択肢を押すと、その場で正誤と理由が開きます。3 問すべてに正しく答えると、この回は修了で、石が緑に変わります (この端末のブラウザに残ります)。間違えた問いは、あとから解き直せます。

1 問目

n が 2 以上の整数のとき、2^n が n³ より大きくなる最初の n はどれですか。

2 問目

1 秒に 1 億回の計算ができるとします。2^n 通りを全部試す処理が 1 秒に収まる、一番大きい n はどれですか。

3 問目

y = (1/2)^x について、正しいのはどれですか。

説明課題

「品物が 20 個から 40 個に増えると、全部の選び方を試す手間が 2 倍ではなく約 100 万倍になる」理由を、指数関数の言葉で 3 文で説明してください。書いたら、下の模範解答を開いて比べてください。

模範解答

自分の説明を書いてから開いて、比べてください。

この回の先の一歩

入力の大きさから、使える手の形 (n²、n log n、2^n) を先に絞れると、書く前に間に合うかが分かります。いまの自分が転職までの道のどの段にいるかは、転職診断で確かめられます。

もっと深く

この回の続きを、ゆめさくのコースの章や道具で深められます。頁の中の確認クイズに答えたあと、手を動かす量を増やしたいときに使ってください。

一次資料

どれも 2026年10月30日に開いて、題と中身を確かめました。

次へ

分野 2 関数と対数の回

  1. 2-1累乗と対数log は何回掛けるか、何回半分にできるか頁で読む
  2. 2-2関数の形とオーダー一次、二次、指数、対数の伸び方この回

分野 2 の頁へ戻るほかの分野を見る