指数と増減率|関数・指数・対数・総和
このページはプロモーション(広告)を含みます。
関数・指数・対数・総和(初級・読む22分+演習30分)
この授業のゴール
- 増減率 r を倍率 (1+r) に直し、n 回続けた結果を A(1+r)^n で計算できる
- 指数法則(積・累乗・0乗・負の指数)を数値で確かめて使える
- 「毎回同じ量を足す(線形)」と「毎回同じ割合で掛ける(指数)」の違いを数表で示せる
- 割合の差(パーセントポイント)と変化率(%)を区別して説明できる
仕事でどう使うか
売上、ユーザー数、感染者数、利息、機械学習の学習率の減衰など、実務の多くの量は割合で増減します。足し算ではなく掛け算で進むため、直感とずれやすい分野です。
| 路線 | この授業の使いどころ |
|---|---|
| DS(データサイエンティスト) | 月次成長率(CMGR:Compound Monthly Growth Rate、月次複合成長率)の計算、予測の前提確認。「毎月10%増」を足し算で見積もる誤りを防ぐ |
| ML(機械学習エンジニア) | 学習率を毎エポック0.9倍にする減衰、重みの指数移動平均。n回後の大きさを式で見積もる |
| DX(DX推進・AI企画) | 投資対効果の試算、コスト削減率の積み上げ。KPI定義書に「率」の基準(前月比か前年比か、割合かパーセントポイントか)を書く |
| RS(研究者) | 指数成長・減衰のモデル(細菌数、放射性崩壊)。実測値が指数に従うかを、次の授業の対数で検証する |
「年間成長率を月に直すといくらか」「割引を重ねた最終価格は」は、会議でよく聞かれる質問です。
前提
次の知識を使います。
- 割合とパーセント(20%は0.2、10%増は1.1倍)→ 比率・割合・パーセントポイント
- 文字式と代入 → 文字式と代入
- 関数の合成(同じ操作を何度も重ねる)→ 関数・逆関数・合成
電卓か、画面内のPythonで計算できます。** は累乗(べき乗)の記号で、1.1**2 は $1.1^2$ です。
身近な状況:10%ずつ増える売上と、10ずつ増える売上
月の売上が100万円の店が2つあります。
- A店:毎月10万円ずつ増える(足し算の増加)
- B店:毎月10%ずつ増える(掛け算の増加)
| 月 | A店(万円) | B店(万円) |
|---|---|---|
| 0 | 100 | 100 |
| 1 | 110 | 110 |
| 2 | 120 | 121 |
| 3 | 130 | 133.1 |
| 10 | 200 | 約259.4 |
1か月後は同じ110万円です。しかし2か月後、B店は 110 の10%(11万円)が増えて 121万円 になります。A店のように120万円ではありません。増える量が、その時点の大きさに比例するためです。
「10%を2回で20%増」ではなく、「1.1を2回掛けて1.21倍=21%増」です。この授業では、この掛け算の増え方を式で書きます。
直感的な説明:増減率は「倍率」に直して掛ける
増減率 $r$ を倍率に直すと、計算が単純になります。
- 10%増($r=0.10$)→ 倍率 1.10
- 5%減($r=-0.05$)→ 倍率 0.95
- 100%増 → 倍率 2.00(2倍)
- 100%減 → 倍率 0(すべて失う)
倍率を掛けるだけなので、「10%増を2回」は $\times1.1\times1.1$、つまり $1.1$ を2回掛ける=2乗です。「同じ数を何回掛けたか」を書くための記法が指数です。
増加と減少も同じ式で表せます。5%減を3回なら $0.95$ を3回掛けます。割合で動く量は、倍率の累乗で追いかけると覚えてください。
正確な定義:累乗・指数法則・複利の式
累乗(冪、べき):$a^n$ は $a$ を $n$ 回掛けた値です。$a$ を底(てい)、$n$ を指数と呼びます。$n$ は正の整数のとき $a^n=\underbrace{a\times\cdots\times a}_{n\text{個}}$ です。
$2^3=2\times2\times2=8$、$1.1^2=1.21$ のように計算します。
指数を0や負の数に広げても、次の指数法則が成り立つように定義します。ここで $a>0$、$m,n$ は整数です。
| 法則 | 式 | 数値例 |
|---|---|---|
| 積 | $a^m\times a^n=a^{m+n}$ | $2^3\times2^2=8\times4=32=2^5$ |
| 累乗の累乗 | $(a^m)^n=a^{mn}$ | $(2^3)^2=64=2^6$ |
| 0乗 | $a^0=1$ | $5^0=1$ |
| 負の指数 | $a^{-n}=1/a^n$ | $2^{-3}=1/8=0.125$ |
| 分数の指数 | $a^{1/2}=\sqrt{a}$ | $9^{1/2}=3$ |
$a^0=1$ は、$a^3\div a^3=a^{3-3}=a^0$ と、$a^3\div a^3=1$ が一致するように決めたものです。$0^0$ や、負の底での分数の指数は扱いが難しいので、以降は底 $a>0$ とします。
増減率の式:初期値を $A$、1回あたりの増減率を $r$(10%なら $0.10$)、回数を $n$ とすると、$n$ 回後の値 $V_n$ は
$$V_n=A(1+r)^n$$
です。$A$ は元の量(単位は量と同じ)、$r$ は1回あたりの率(無単位)、$n$ は回数(整数)です。$r$ の期間(月か年か)と $n$ の単位(か月か年か)を必ず揃えます。
数値代入:$A=200$、$r=0.05$、$n=3$ なら $V_3=200\times1.05^3=200\times1.157625=231.525$ です。
A, r, n = 100, 0.10, 10
exp_value = A * (1 + r) ** n # 指数: 倍率を n 回掛ける
lin_value = A + A * r * n # 線形: 毎回 A*r を足す
print("指数:", round(exp_value, 2))
print("線形:", round(lin_value, 2))
出力は 指数: 259.37 と 線形: 200.0 です。round(値, 2) は小数第2位に丸める関数です。
段階付き例題:割引の連続、成長率の換算
例題1:1000円の商品を「20%引き」にした後、さらに「10%引き」にした。最終価格と、全体の割引率は。
- ステップ1:倍率に直す。20%引き→0.8、10%引き→0.9。
- ステップ2:掛ける。$1000\times0.8\times0.9=720$円。
- ステップ3:全体の割引率は $1-0.72=0.28$、つまり28%引き。20%+10%=30%引きではありません。
例題2:月に2%ずつ増えるなら、1年(12か月)で何%増か。
- 倍率は $1.02^{12}$。$1.02^{12}\approx1.2682$。
- 年の増加率は約 26.82%。月率2%を12倍した24%ではありません(複利効果で上回ります)。
例題3:登録率が5%から8%になった。
- 差は $8-5=3$ パーセントポイント(percentage point:割合どうしの差の単位)。
- 変化率は $(8-5)/5=0.6$、つまり60%増。「3%増」と言うと、どちらの意味か不明で誤解されます。
price = 1000
final = price * 0.8 * 0.9
print("最終価格", final, "全体の割引率", 1 - final / price)
print("月2%の12か月", (1.02 ** 12 - 1) * 100)
print("pp差", 8 - 5, "変化率", (8 - 5) / 5)
出力は 720.0 と約0.28、約26.82、3 と 0.6 です(小数の下の桁は丸め誤差で多少ずれます)。
操作して理解する:回数と率を変えて線形と比べる
次のコードで r(率)と n(回数)を変えて、線形との差がどう広がるか確認します。出力は各回の値の一覧です。
A, r = 100, 0.10
for n in [0, 1, 2, 5, 10, 20, 30]:
exp_v = A * (1 + r) ** n
lin_v = A * (1 + r * n)
print(n, round(exp_v, 1), round(lin_v, 1))
予想してから実行しましょう。
n=20では、指数が約672.7、線形が300。差が急に広がる。rを-0.10にすると、指数は0に近づく($0.9^{20}\approx0.1216$ で約12.2)が、線形はA*(1-0.1*n)でn=10に0、n=20に−100となり、負になる。減少を足し算で見積もると、あり得ない値が出ます。r=0.01と小さくしても、n を大きくすれば指数は線形を追い越す。
成長や減衰が割合で決まるのか、一定量で決まるのかを、まずデータで確認します。差分(前回との差)が一定なら線形、比(前回との比)が一定なら指数です。
発展:倍増時間の目安と、指数成長の限界
率 $r$ で成長する量が2倍になる回数は $n$ を $(1+r)^n=2$ から求めます。この $n$ を求める操作は対数が必要で、対数と桁 で扱います。目安として、70÷(率を%で表した値)がおおよその倍増回数になります(72の法則に近いものです。厳密な式ではなく、小さな率での近似です)。
例:7%成長なら、$70\div7=10$ 回でほぼ2倍。実際は約10.24回です。
限界:実際の量は、いつまでも指数で増えません。市場の大きさ、容量、人口などの上限があり、後には成長が鈍ります(S字型のロジスティック曲線)。「今の成長率が続けば」という前提を、予測には必ず書きます。
もう一点:率が時間によって変わる場合(月ごとに2%、5%、−1%)は、$V_n=A\prod(1+r_i)$ と各回の倍率を掛け合わせます(積の記号は 総和と総乗の記号)。平均の率を足して使うと、結果がずれます。
よくある失敗
失敗1:増減率を足して合計する
「10%増を2回だから20%増」は誤りです。
A = 100
wrong = A * (1 + 0.10 * 2) # 20%増として計算
right = A * 1.10 ** 2 # 1.1を2回掛ける
print(wrong, round(right, 2))
誤りは120、正しくは121です。2回目の10%は、110に対する10%です。回数が増えるほど差が大きくなります。直し方:率は倍率 $(1+r)$ に直して累乗する。
失敗2:20%減と20%増で元に戻ると考える
100を20%減らして80にし、その後20%増やしても、元の100には戻りません。
v = 100 * 0.8 # 20%減
v2 = v * 1.2 # 20%増
print(v, round(v2, 2))
print("元に戻す倍率", 1 / 0.8)
結果は96です。20%増は「80に対する20%」で、16しか増えません。元に戻すには $1/0.8=1.25$ 倍(25%増)が必要です。直し方:増減は基準が違う。戻す操作は逆数の倍率で考える。
失敗3:パーセントとパーセントポイントを混同する
購入率が20%から25%に上がったとき、「5%上がった」と報告すると、相対的な5%増(20%の5%=1ポイント分)と取られる可能性があります。
before, after = 0.20, 0.25
print("差(pp):", round((after - before) * 100, 2))
print("変化率(%):", round((after - before) / before * 100, 2))
差は5パーセントポイント、変化率は25%です。直し方:割合どうしの差は「ポイント」、元の値との比較は「%増」と書き分ける。KPI定義書では、どちらで報告するかを事前に決める。
まとめ
- 割合で増減する量は、倍率 (1+r) を n 回掛ける:V=A(1+r)^n。
- 率は足せない。10%増を2回は21%増、20%減の後の20%増は元に戻らない。
- 指数法則(積・累乗・0乗・負の指数)は、底 a>0 で数値確認しながら使う。
- 割合どうしの差はパーセントポイント、元との比較は%増。KPIでは書き分ける。
用語
- 累乗(べき乗)(power)
同じ数を繰り返し掛けること。a^n は a を n 回掛けた値。
- 底と指数(base / exponent)
a^n の a を底、n を指数という。
- 複利(compound interest)
増えた分にも次の期の率がかかる増え方。V=A(1+r)^n。
- パーセントポイント(percentage point)
割合どうしの差を表す単位。5%から8%は3ポイント。
よくある質問
なぜ「率を足す」ではなく「倍率を掛ける」のですか?
各回の増加は、その時点の量に対する割合だからです。基準が毎回変わるので、率は足せません。倍率を掛けるとどの回数でも正しい結果が出ます。
指数と線形はどう見分けますか?
データの隣り合う値の差と比を計算します。差が一定なら線形、比が一定なら指数です。グラフでは、通常の軸で曲がって見え、対数軸にすると直線になるのが指数です(次の授業)。
$a^0=1$ はなぜですか?
指数法則 $a^m\div a^n=a^{m-n}$ が $m=n$ でも成り立つようにするためです。$a^3\div a^3$ は1なので、$a^0=1$ と決めると法則が壊れません。
前年比と前月比の違いは?
基準期間が違います。前年比は1年前と比べる率、前月比は1か月前と比べる率です。KPIに書くときは、基準期間と、割合かポイント差かを明記します。
予測で「今の成長率が続く」と仮定してよいですか?
短期の目安には使えますが、長期は危険です。市場規模などの上限があるので、前提を明記し、複数の成長率(楽観・標準・悲観)で試算するのが実務の基本です。
マイナスの率(減少)も同じ式でよいですか?
はい。$r=-0.1$ なら倍率 $0.9$ で、同じ $A(1+r)^n$ を使います。ただし $r\le-1$ は倍率が0以下になり、量が残らない(または負)ことを意味するので、現実の量では通常使いません。
確認問題
問1 毎月10%ずつ増える量は、3か月後に元の何倍か。
- ① 1.3倍
- ② 1.1×3=3.3倍
- ③ 約1.331倍
- ④ 約1.21倍
解答と解説
正解:③
1.1を3回掛けて $1.1^3=1.331$ 倍です。10%ずつを足した30%増(1.3倍)ではありません。
問2 100を20%減らし、その後20%増やした結果は。
- ① 100
- ② 96
- ③ 104
- ④ 80
解答と解説
正解:②
$100\times0.8=80$、$80\times1.2=96$ です。増加の基準が80に変わるため、元には戻りません。
問3 $2^{-3}$ の値はどれか。
- ① −8
- ② −6
- ③ 0.125
- ④ 8
解答と解説
正解:③
$a^{-n}=1/a^n$ なので $2^{-3}=1/8=0.125$。負の指数は「負の数になる」のではなく、逆数を表します。
問4 登録率が5%から8%になったことを正しく述べているのはどれか。
- ① 8%増えた
- ② 60パーセントポイント増えた
- ③ 3%増えた
- ④ 3パーセントポイント増えた(相対では60%増)
解答と解説
正解:④
割合どうしの差は3パーセントポイントです。元の5%に対する変化率は60%増です。
問5 毎月2%で成長するとき、1年の成長率に最も近いのはどれか。
- ① 約26.8%
- ② 2%
- ③ 12%
- ④ 24%
解答と解説
正解:①
$1.02^{12}\approx1.268$ なので約26.8%増です。2%×12=24%は複利効果を落とした値です。
問6 毎回の変化を前回との差で見て、差が一定のとき、データはどちらのモデルに近いか。
- ① 線形(足し算)
- ② 指数(掛け算)
- ③ どちらでもない
- ④ 判断できない
解答と解説
正解:①
前回との差が一定なら線形、前回との比が一定なら指数です。
次に学ぶこと
次は 対数と桁 で、「何回掛ければその値になるか」を求める対数を学びます。倍増に何年かかるかも対数で求められます。戻るなら 関数・逆関数・合成(合成)、先に進むなら 数列と等比級数(等比級数)も関連します。
この授業の確認問題だけで習得とはしません。MA01 の総合テストと自力課題で判定します。
キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。
アプリを無料で開く有料版と無料版の違い