#09 ふれてみよう高校数学 関数

指数関数

指数関数の定義

「銀行の金利」「ウイルスの感染拡大」「放射性物質の崩壊」——これらはすべて「同じ割合で増える(または減る)」という共通点があります。1年後に2倍、2年後に4倍、3年後に8倍……と倍々に増えるとき、nn 年後の量は 2n2^n で表されます。

これを一般化して、変数 xx を指数(べき乗の部分)に使った関数が指数関数です。

a>0a > 0a1a \neq 1 のとき、xx の関数

y=ax\boxed{y = a^x}

指数関数といいます。

aa の値による違い

条件グラフの形増減
a>1a > 1右上がり単調増加
0<a<10 < a < 1右下がり単調減少

どちらの場合も (0,1)(0, 1) を通るa0=1a^0 = 1 なので)ことが特徴です——「どんな底でも0乗は1」というルールの表れです。


指数関数の性質

指数の計算ルールは中学校で習ったものと同じです——「掛け算は指数の足し算、割り算は指数の引き算」:

a0=1,a1=a,an=1ana^0 = 1, \quad a^1 = a, \quad a^{-n} = \frac{1}{a^n} aman=am+n,aman=amn,(am)n=amna^m \cdot a^n = a^{m+n}, \quad \frac{a^m}{a^n} = a^{m-n}, \quad (a^m)^n = a^{mn} (ab)n=anbn,(ab)n=anbn(ab)^n = a^n b^n, \quad \left(\frac{a}{b}\right)^n = \frac{a^n}{b^n}

インタラクティブデモ:各底での指数曲線の比較

y=2xy = 2^x(青)、y=3xy = 3^x(オレンジ)、y=(1/2)xy = (1/2)^x(赤)の3つを描画します。すべて (0,1)(0, 1) を通ることと、底が大きいほど増加が急であることを確認してください。マウスを左右に動かすと、現在の xx での各値が表示されます——x=3x = 3 あたりで 3x3^x がいかに急激に大きくなるかが見てとれます。

青: 2ˣ オレンジ: 3ˣ 赤: (1/2)ˣ すべて (0,1) を通る
function loop() {
ctx.clearRect(0, 0, W, H);

var ox = W / 2 - 40, oy = H - 40;
var scaleX = 55, scaleY = 40;
var xVal = (mx / W) * 6 - 1;

function toScreen(x, y) {
  return { sx: ox + x * scaleX, sy: oy - y * scaleY };
}

// Grid
ctx.strokeStyle = 'rgba(255,255,255,0.06)';
ctx.lineWidth = 1;
for (var gx = -2; gx <= 6; gx++) {
  var gs = toScreen(gx, 0);
  ctx.beginPath(); ctx.moveTo(gs.sx, 0); ctx.lineTo(gs.sx, H); ctx.stroke();
}
for (var gy = 0; gy <= 8; gy += 2) {
  var gs2 = toScreen(0, gy);
  ctx.beginPath(); ctx.moveTo(0, gs2.sy); ctx.lineTo(W, gs2.sy); ctx.stroke();
}

// Axes
ctx.strokeStyle = 'rgba(255,255,255,0.35)';
ctx.lineWidth = 1.5;
ctx.beginPath(); ctx.moveTo(0, oy); ctx.lineTo(W, oy); ctx.stroke();
ctx.beginPath(); ctx.moveTo(ox, 0); ctx.lineTo(ox, H); ctx.stroke();

// Axis tick labels
ctx.fillStyle = 'rgba(255,255,255,0.45)';
ctx.font = '12px sans-serif';
for (var lx = -1; lx <= 5; lx++) {
  var ls = toScreen(lx, 0);
  ctx.fillText(lx, ls.sx - 4, oy + 16);
}
for (var ly = 2; ly <= 8; ly += 2) {
  var ls2 = toScreen(0, ly);
  ctx.fillText(ly, ox + 6, ls2.sy + 4);
}

// y=2^x - blue
ctx.strokeStyle = '#4fc3f7';
ctx.lineWidth = 2.5;
ctx.beginPath();
var started2 = false;
for (var xi = -2; xi <= 5.5; xi += 0.03) {
  var yi = Math.pow(2, xi);
  if (yi > 9) { started2 = false; continue; }
  var s = toScreen(xi, yi);
  if (!started2) { ctx.moveTo(s.sx, s.sy); started2 = true; } else ctx.lineTo(s.sx, s.sy);
}
ctx.stroke();
ctx.fillStyle = '#4fc3f7';
ctx.font = 'bold 13px sans-serif';
ctx.fillText('y = 2ˣ', toScreen(3.2, 9).sx, toScreen(3.2, 9).sy);

// y=3^x - orange
ctx.strokeStyle = '#ff8a65';
ctx.lineWidth = 2.5;
ctx.beginPath();
var started3 = false;
for (var xi3 = -2; xi3 <= 5.5; xi3 += 0.03) {
  var yi3 = Math.pow(3, xi3);
  if (yi3 > 9) { started3 = false; continue; }
  var s3 = toScreen(xi3, yi3);
  if (!started3) { ctx.moveTo(s3.sx, s3.sy); started3 = true; } else ctx.lineTo(s3.sx, s3.sy);
}
ctx.stroke();
ctx.fillStyle = '#ff8a65';
ctx.fillText('y = 3ˣ', toScreen(2.0, 9.2).sx, toScreen(2.0, 9.2).sy);

// y=(1/2)^x - red
ctx.strokeStyle = '#ef5350';
ctx.lineWidth = 2.5;
ctx.beginPath();
var startedH = false;
for (var xi4 = -2; xi4 <= 5.5; xi4 += 0.03) {
  var yi4 = Math.pow(0.5, xi4);
  if (yi4 > 9) { startedH = false; continue; }
  var s4 = toScreen(xi4, yi4);
  if (!startedH) { ctx.moveTo(s4.sx, s4.sy); startedH = true; } else ctx.lineTo(s4.sx, s4.sy);
}
ctx.stroke();
ctx.fillStyle = '#ef5350';
ctx.fillText('y = (½)ˣ', toScreen(-1.5, 3.5).sx, toScreen(-1.5, 3.5).sy);

// (0,1) highlighted
var s01 = toScreen(0, 1);
ctx.strokeStyle = '#ffeb3b';
ctx.lineWidth = 2;
ctx.beginPath(); ctx.arc(s01.sx, s01.sy, 8, 0, Math.PI * 2); ctx.stroke();
ctx.fillStyle = '#ffeb3b';
ctx.font = '12px sans-serif';
ctx.fillText('(0, 1)', s01.sx + 10, s01.sy - 8);

// Vertical scan line
var xClamped = Math.max(-1.5, Math.min(5, xVal));
var scanSx = toScreen(xClamped, 0).sx;
ctx.strokeStyle = 'rgba(255,235,59,0.4)';
ctx.lineWidth = 1;
ctx.setLineDash([4,3]);
ctx.beginPath(); ctx.moveTo(scanSx, 0); ctx.lineTo(scanSx, H); ctx.stroke();
ctx.setLineDash([]);

// Points on curves
var v2 = Math.pow(2, xClamped), v3 = Math.pow(3, xClamped), vH = Math.pow(0.5, xClamped);
if (v2 <= 9) { var p2 = toScreen(xClamped, v2); ctx.fillStyle = '#4fc3f7'; ctx.beginPath(); ctx.arc(p2.sx, p2.sy, 5, 0, Math.PI*2); ctx.fill(); }
if (v3 <= 9) { var p3 = toScreen(xClamped, v3); ctx.fillStyle = '#ff8a65'; ctx.beginPath(); ctx.arc(p3.sx, p3.sy, 5, 0, Math.PI*2); ctx.fill(); }
if (vH <= 9) { var pH = toScreen(xClamped, vH); ctx.fillStyle = '#ef5350'; ctx.beginPath(); ctx.arc(pH.sx, pH.sy, 5, 0, Math.PI*2); ctx.fill(); }

// Info panel
ctx.fillStyle = 'rgba(0,0,0,0.65)';
ctx.beginPath(); ctx.roundRect(10, 10, 200, 90, 8); ctx.fill();
ctx.fillStyle = '#ffeb3b';
ctx.font = 'bold 13px monospace';
ctx.fillText('x = ' + xClamped.toFixed(2), 18, 32);
ctx.fillStyle = '#4fc3f7';
ctx.font = '13px monospace';
ctx.fillText('2ˣ = ' + (v2 <= 9 ? v2.toFixed(3) : '>9'), 18, 52);
ctx.fillStyle = '#ff8a65';
ctx.fillText('3ˣ = ' + (v3 <= 9 ? v3.toFixed(3) : '>9'), 18, 70);
ctx.fillStyle = '#ef5350';
ctx.fillText('(½)ˣ = ' + vH.toFixed(3), 18, 90);

requestAnimationFrame(loop);
}
loop();

ネイピア数 ee

銀行に100万円預けたとして、年利100%で「年1回複利」なら1年後は200万円。「半年ごと複利」なら (1+12)2225\left(1 + \frac{1}{2}\right)^2 \approx 225 万円。「毎日複利」ならもっと増える——「複利の頻度を無限に増やしたら何倍になるか?」を計算した数が ee です。

自然対数の底として特別重要な定数:

e=limn(1+1n)n2.71828e = \lim_{n\to\infty}\left(1 + \frac{1}{n}\right)^n \approx 2.71828\ldots

y=exy = e^x は微分しても自分自身になる(ddxex=ex\dfrac{d}{dx}e^x = e^x)という唯一の指数関数です——「変化率が自分自身に等しい」という特別な性質が、物理や工学で多用される理由です。


指数の計算ルール(まとめ)

aman=am+naman=amn(am)n=amna^m \cdot a^n = a^{m+n} \quad \frac{a^m}{a^n} = a^{m-n} \quad (a^m)^n = a^{mn} a1/n=anam/n=amna0=1a^{1/n} = \sqrt[n]{a} \quad a^{m/n} = \sqrt[n]{a^m} \quad a^0 = 1

「分数の指数はルート(根号)に変換できる」——a1/2=aa^{1/2} = \sqrt{a}a1/3=a3a^{1/3} = \sqrt[3]{a} というのは特に頻出です。


練習問題

  1. 43/24^{3/2} を計算せよ。
  2. y=2xy = 2^x のグラフと y=2xy = 2^{-x} のグラフはどのような関係にあるか。
  3. (13)x\left(\dfrac{1}{3}\right)^x33 を底とする指数関数で表せ。
  4. 2x+1=82^{x+1} = 8 を解け。

解答

  1. 43/2=(4)3=23=84^{3/2} = (\sqrt{4})^3 = 2^3 = 8
  2. yy 軸に関して対称(2x=(1/2)x2^{-x} = (1/2)^x なので)
  3. (13)x=3x\left(\dfrac{1}{3}\right)^x = 3^{-x}
  4. 2x+1=232^{x+1} = 2^3x+1=3x+1 = 3x=2x = 2

まとめ

  • y=axy = a^xa>0,a1a > 0, a \neq 1)は (0,1)(0,1) を通る——「0乗はいつも1」
  • a>1a > 1:単調増加(急速に大きくなる)、0<a<10 < a < 1:単調減少(急速に小さくなる)
  • y=axy = a^xy=axy = a^{-x}yy 軸に関して対称——「プラス方向とマイナス方向の鏡像」
  • e2.718e \approx 2.718 は自然対数の底——「無限複利計算から生まれた数」

次回は対数関数を学びます。指数関数の「逆函数」で、「何乗すると〇〇になるか」を求める道具です。